Linux系统参数优化
下文中提到的一些配置,需要较新的Linux(2.6以上)内核才能够支持,笔者使用的CentOS7.4,内核版本3.10,如果不满足需要的话,最好进行相应的升级,毕竟打补丁是件费力不讨好的事情。对于系统层面的调优,通常我们修改文件描述符限制、缓冲区队列长度以及临时端口数量就可以了。
由于每个TCP连接都要占用一个文件描述符,一旦文件描述符耗尽,新的连接到来就会返回“Toomanyopenfiles”这样的错误,为了提高性能,我们需要对其进行修改:1.系统层级的限制编辑文件/etc/sysctl.conf,添加如下内容:
fs.nr_open=10000000
用户层级的限制编辑文件/etc/security/limits.conf,添加以下内容:
*softnofile1000000
我们需要确保用户层级限制低于系统层级限制,否则会导致无法通过SSH登录。修改完毕执行如下命令:
$sysctl-p
可以通过执行命令ulimit-a查看是否修改成功。
编辑文件/etc/sysctl.conf,添加如下内容:
Thelengthofthetcpacceptqueuenet.core.somaxconn=65535
其中tcp_max_syn_backlog用于指定半连接SYN队列长度,当新连接到来时,系统会检测半连接SYN队列,如果队列已满,则无法处理该SYN请求,并在/proc/net/netstat中的ListenOverflows和ListenDrops中增加统计计数somaxconn用于指定全连接ACCEPT队列长度,当该队列满了以后,客户端发送的ACK包将无法被正确处理,并返回错误”connectionresetbypeer”Nginx则会记录一条error日志”noliveupstreamswhileconnectingtoupstreams”如果出现以上错误,我们需要考虑增大这两项的配置。
由于Nginx用作代理,每个到上游Web服务的TCP连接都要占用一个临时端口,因此我们需要修改ip_local_port_range参数修改/etc/sysctl.conf文件,添加如下内容:
net.ipv4.ip_local_port_range=102465535

upstreamBACKEND{
proxy_passhttp://BACKEND;
proxy_set_headerConnection"";
}
其中keepalive既非timeout,也不是连接池数量,官方解释如下:
Theconnectionsparametersetsthemaximumnumberofidlekeepaliveconnectionstoupstreamserversthatarepreservedinthecacheofeachworkerprocess.Whenthisnumberisexceeded,theleastrecentlyusedconnectionsareclosed.
可以看出它的意思是“最大空闲长连接数量”,超出这个数量的空闲长连接将被回收,当请求数量稳定而平滑时,空闲长连接数量将会非常小(接近于0),而现实中请求数量是不可能一直平滑而稳定的,当请求数量有波动时,空闲长连接数量也随之波动:
当空闲长连接数量大于配置值时,将会导致大于配置值的那部分长连接被回收;
当长连接不够用时,将会重新建立新的长连接。
如果该值过小,连接池会经常进行回收、分配和再回收操作。为了避免这种情况出现,可以根据实际情况适当调整这个值,在我们实际情况中,目标QPS为6000,Web服务响应时间约为200ms,因此需要约1200个长连接,而keepalive值取长连接数量的10%~30%就可以了,这里我们取300,如果不想计算,直接设为1000也是可行的。
记录日志的I/O开销比较高,好在Nginx支持日志缓存,我们可以利用这个功能,降低写日志文件的频率,从而提高性能。结合使用buffer和flush两个参数可以控制缓存行为
access_log/var/logs/nginx-access.logbuffer=64kgzipflush=1m
其中buffer制定了缓存大小,当缓冲区达到buffer所指定的大小时,Nginx就会将缓存起来的日志写到文件中;flush指定了缓存超时时间,当flush指定的时间到达时,也会触发缓存日志写入文件操作。
Nginx配置中同样有相应的配置项:worker_rlimit_nofile,理论上这个值应该设置为/etc/security/limits.conf中的值除以worker_processes,但实际中不可能每个进程均匀分配,所以这里只要设置成和/etc/security/limits.conf一样就可以了
worker_rlimit_nofile1000000;
以上就是Nginx性能优化的方法的详细内容,更多请关注主机测评网其它相关文章!
本文来源:虚拟主机--Nginx性能优化的方法(nginx性能指标)
本文地址:https://www.idcbaba.com/zhuji/2402.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



