您现在的位置是:网络安全 >>正文
我们一起聊聊服务器性能如何优化?
网络安全75299人已围观
简介我们开发的软件服务需要在服务器上运行,所以服务器性能代表了软件的性能上限,因此服务器性能调优是个十分重要的环节,然而大部分同学对服务器性能调优关注的较少,今天从3个部分对服务器性能调优进行介绍,分别是 ...
我们开发的聊聊软件服务需要在服务器上运行 ,所以服务器性能代表了软件的服务性能上限 ,因此服务器性能调优是器性个十分重要的环节 ,然而大部分同学对服务器性能调优关注的优化较少 ,今天从3个部分对服务器性能调优进行介绍 ,聊聊分别是服务 :服务器配置选择,服务器负载分析,器性服务器内核参数调优。优化
服务器配置选择
服务器一般是聊聊由CPU、内存 、建站模板服务磁盘和网卡组成,器性因此选择服务器配置就是优化选择CPU核数 、内存大小 、聊聊磁盘大小及类型、服务网络带宽。器性但是,服务器配置的选择是很难标准化的,也就是说很难推断出“一台需要达到1000TPS的后端服务器”的配置应该是服务器租用什么样的。因为软件的最终运行性能与软件的实现方式是紧密相关的 ,即使是同一个后端应用程序中的两个接口 ,由于具体功能的差别 ,性能也会有所差别 。
因此,服务器配置的选择应该基于具体的源码库测试结果 。一开始可以选用配置较低的服务器做调优和测试,并以该服务器的测试结果作为选择服务器的依据 。
以一个订单业务为例,经过测试后 ,一台配置为4核 CPU 、16GB内存 、10Mbps带宽、50GB机械磁盘的服务器的测试结果为 :支持50并发量和300TPS吞吐量(增大并发量后会出现超时报错) 。而在压力测试过程中, CPU 的香港云服务器使用率接近75%,内存使用率在 50%以下,带宽使用率在50%以下,除去日志以外无磁盘操作。
因此可以认为 ,一台配置为4核 CPU ( CPU 使用率需要在75%以下)、8GB内存(内存使用率可以接近100%) 、 5Mbps 带宽(带宽使用率可以接近100%)的服务器 ,可以满足订单接口支持50并发量、300TPS吞吐量的压力 。
如果需要达到200并发数、2400TPS吞吐量的目标的话,源码下载则需要8台配置为4核 CPU 、8GB内存 、5Mbps带宽的服务器,或者1台配置为32核 CPU 、64GB内存、40Mbps带宽的服务器。当然,最终的服务器配置还是需要通过测试来验证。
注意:在以上订单接口的例子中 ,后端服务器和数据库等服务器需要一起调试 ,避免后端服务器性能过剩,高防服务器而数据库等服务器性能不足的情况发生 。另外,以上选择服务器配置的方法不一定适用于所有场景,请斟酌参考。
服务器负载分析
在性能调优时 ,需要先对服务器负载进行分析,通常而言 ,我们主要分析CPU使用率、内存使用率、磁盘I/O ,服务器负载和带宽使用情况。
CPU使用率CPU使用率反应的是CPU的忙碌情况 。当CPU达到100%时,部分进程会进入等待状态,CPU暂时不会对其进行处理。在实际情况下,为了应对一下突发性的请求压力,服务器CPU使用率一般需要在75%以下 。如果一台服务器的CPU使用率多次高于75%,这时候就考虑增加新的服务器 。
监控CPU使用率我推荐大家使用htop工具,可以非常直观看到CPU使用率、内存使用率、及负载等信息。
使用htop查看CPU负载首先我们需要安装htop,以centos为例,安装命令如下:
复制yum install htop -y1.安装完成后我们就可以通过htop命令观察CPU负载了
复制htop1.输入htop命令后我们可以很直观的看到CPU负载情况,该命令的CPU使用率会以多个核作为单位进行显示。操作系统机会自动分配多个核的负载,当所有核的CPU使用率都超过75%时才能认为服务器的CPU使用率已经超过75%。
cpu负载如上图所示 ,这是一个4核CPU服务器,在截图的时候其中3核CPU使用率都超过了75% ,再观察一会发现所有CPU的使用率都在85%左右徘徊,说明CPU负载很高了 ,需要考虑增加新的服务器 。
内存使用率内存使用率反应的是内存的使用情况 。内存用于存放程序的代码及数据 ,一般分为物理内存和虚拟内存 ,其中物理内存指的是服务器的内存 ,而虚拟内存指的是硬盘的一块空间。当物理内存使用率达到100%时将会使用虚拟内存 。需要注意的是,虚拟内存的读写速度远远低于物理内存,如果程序被放在了虚拟内存执行,那么程序的执行效率会变得很低。
一般而言,服务器的物理内存应该保持在80%以下,虚拟内存使用率保持在0%。
服务器内存使用情况还是可以通过hop工具进行查看
内存使用率
上面显示了服务器的内存使用情况 :总内存16G,使用了10G左右 ,内存使用率62%,可以继续使用,同时关闭了Swap虚拟内存 。
在下MEM%栏中显示了单个进程的内存使用率。
磁盘I/O磁盘I/O指的是磁盘的读写,在软件系统中,日志、文件操作、数据库操作都会造成磁盘读写压力 ,其中又以数据库操作为甚,在高并发情况下往往数据库会首先成为系统的瓶颈。
磁盘监控我推荐大家使用iostat工具,可以很方便查看磁盘的使用情况 。
使用iostat查看磁盘I/O首先我们需要安装iostat ,以centos为例,安装命令如下 :
复制yum install sysstat -y1.安装完成后我们就可以通过iostat命令磁盘使用情况了。
复制# 查看磁盘总体读写情况 , 1代表每1秒读取一次数据 iostat -x 11.2.
磁盘IO
输入iostat命令后,磁盘总体读写情况如上所示。磁盘负载主要关注2个指标:%idle,%util
%idle:表示CPU除去等待磁盘I/O以外的空闲时间百分比,这个指标应该要保证在70%以上%util:该设备用于I/O操作的时间百分比,这个指标需要保证在70%以下,当到达100%时表示已经满负载。为了降低磁盘负载,可以采用性能更高的磁盘(OSD ,PCIE)或者降低磁盘的操作频率(异步写 、合并写)平均负载平均负载指的是单位时间内平均的活跃进程数 ,是一个表示服务器负载的指标 。一般情况下需要保证平均负载的值小于当前服务器的CPU核数。
同样的,查看服务器平均负载我们也可以使用htop命令
图片
在这里我们主要关注Load average指标 ,上图有3个数字,分别代表1分钟,5分钟 ,15分钟的平均负载 。
一般情况下服务器的平均负载需要小于当前服务器的CPU核数,为了应对突发状况 ,服务器的平均负载应该在75%即3 以下,很显然 ,上图这台服务器平均负载超过了75% ,需要考虑提升性能了。
网络使用情况网络使用情况也是监控的重要指标 。当带宽不足时会大大增加请求的响应时间 。为了防止突发性并发压力 ,应该保证服务器的带宽使用率在80%以上 。这里需要注意的是 ,物理网卡限制了服务器所能使用的最大宽带 。
查看网络使用情况我推荐使用nload工具 。
使用nload查看网络首先需要安装nload,以centos为例
复制yum install nload -y1.安装完成后我们直接运行nload
复制nload1.
图片
输入nload命令后,网络使用情况如上图所示。其中 ,网络使用情况分为流入网卡的数据与流出网卡的数据。流入网卡的对应下行带宽的网速,流出网卡的数据对应上行带宽的网速。如果 “当前网速” 持续接近 “最大网速” 时,代表带宽使用率已经接近100%。
指标说明 :
Curr :当前网速Avg:平均网速Min :最小网速Max :最大网速Ttl:总流量服务器内核参数调优
光有强大的物理性能是不够的,还需要对内核参数进行调优 ,这样才能在高并发压力下充分体现服务器应有的性能 。当然 ,并不是所有的服务器都需要做高并发性能调优 ,一般来说,只需要对要处理高并发请求的服务器进行内核参数调优即可,常见的包括:前端服务器,后端服务器,数据库服务器 。
服务器常见的调优参数主要有两个 :单个进程最大打开文件数 和 TCP相关设置。
单个进程最大打开文件数修改单个文件最大打开文件数,只需要编辑/etc/security/limits.conf文件 ,在文件末尾加上以下四句
复制* soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 655351.2.3.4.其中* 代表所有用户,65536代表修改的值,重启后生效 。
TCP相关设置修改TCP相关参数 ,可以优化TCP高并发通信 ,编辑/etc/sysctl.conf文件,添加以下内容
复制# 为防止洪水攻击,高并发系统需要将此项关闭 net.ipv4.tcp_syncookies = 0 # 开启TCP连接重用,允许处理TIME-WAIT状态的连接重新用于新的TCP连接 net.ipv4.tcp_tw_reuse = 1 # 开启快速回收TCP连接中处于TIME-WAIT状态的连接 net.ipv4.tcp_tw_recycle = 1 #修改超时时间( s ) ,该值表示如果连接由本端关闭,则连接处于 FIN-WAIT-2状态的时间为 net.ipv4.tcp_fin_timeout = 30 #当 keepalive(长连接)启用的时候,TCP发送 keepalive 消息(探测包)的时间间隔( s ),默认为2个小时 net.ipv4.tcp_keepalive_time =1200 #服务器对外连接的端口范围 ,影响该服务器与其他服务器的连接数 net.ipv4.ip_local_port_range =102465535 #SYN队列的长度,可以容纳更多等待连接的网络连接数 ,默认为1024 net.ipv4.tcp_max_syn_backlog = 65535 #保持 TIME_WAIT 状态连接的最大数量,如果超过此值,TIME_WAIT 将立刻被清除并打印警告信息,默认为180000 net.ipv4.tcp_max_tw_buckets =5000 #每个网络接口接收数据包的速率比内核处理这些包的速率快时 ,允许送到队列的数据包的最大数目 net.core.netdev_max_backlog =65535 # TCP最大连接数 net.core.somaxconn = 65535 #预留用于接收缓冲的内存默认值(字节) net.core.rmem_default = 8388608 #预留用于接收缓冲的内存最大值(字节) net.core.rmem_max = 16777216 #预留用于发送缓冲的内存默认值(字节) net.core.wmem_default = 8388608 #预留用于发送缓冲的内存最大值(字节) net.core.wmem_maX = 16777216 #避免时间戳异常 net.ipv4.tcp_timestamps = 0 #系统中最多有多少个 TCP 套接字不被关联到任何一个用户文件句柄上 ,如果超过这个数字,连接将即刻被复位并打印警告信息 ,这个限制仅仅是为了防止简单的DoS 攻击 net.ipv4.tcp_max_orphans =32768001.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.Tags:
转载:欢迎各位朋友分享到网络,但转载请说明文章出处“算法与编程”。http://www.bzli.cn/html/928f7798994.html
相关文章
应对0Day攻击的高阶版防护实践
网络安全0day漏洞是指软件或系统)中已经被人发现,但还并未被开发商或使用者所知晓的应用缺陷或隐患。通常,0day漏洞曝光得越晚,软件或系统提供商给出补丁的几率就越低,那么攻击者利用此类漏洞进行攻击的危害程度 ...
【网络安全】
阅读更多安全运营之浅谈SOAR剧本设计
网络安全SOAR介绍:概述:SOAR(SecurityOrchestration,Automation andResponse),简单字面来讲就是安全编排、安全自动化、安全响应。人们往往忽略了威胁情报(Thr ...
【网络安全】
阅读更多调查称全球多所顶尖高校网站存在网络攻击风险
网络安全Cyber News的一项调查研究显示,全球多所顶尖高校的网站未能及时更新安全补丁,存在敏感信息泄露,甚至被攻击者全面接管的风险。Cyber News 研究团队详细调查了 20 个每月有数百万访问量的 ...
【网络安全】
阅读更多
热门文章
最新文章
友情链接
- 手机安装APP提示解析错误怎么办
- 显卡不接电源会带来什么后果?(揭开显卡不接电源的秘密,了解风险与解决之道)
- 康达智控(探索智能控制未来,康达智控扬帆起航)
- 显卡的位置及寻找技巧(探索显卡的安装位置与优化选择)
- 探索IPF671的优势及应用前景(解析IPF671的性能特点和市场竞争力)
- 国产迈腾品质如何?(解析国产迈腾的关键卖点与用户评价)
- 小米电饭煲999(一款功能全面、操作简便的智能电饭煲)
- 小米4A手机的优势与特点(性价比高,配置强大,适合日常使用)
- Excel表格相同数据用相同颜色填充的方法
- 使用U盘制作Win10系统的教程(简单易懂的Win10系统安装指南,教你轻松搞定) 云服务器亿华云企业服务器源码库网站建设香港物理机b2b信息平台