记nginx一次优化
对网站进行ab测试时测试参数如下
./ab -c 1000 -n 10000 http://www.snwechat.com/index.html
一下是两次测试的性能截图
ab结果发现了大量的失败,多次测试发现QPS基本在3800左右之间
error.log中发现大量的错误,如下
2018/11/06 15:14:43 [error] 1441#0: *791279 connect() to unix:/tmp/php-54-cgi.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 39.105.9.102, server: www.snwechat.com, request: "GET /index.html HTTP/1.0", upstream: "fastcgi://unix:/tmp/php-54-cgi.sock:", host: "www.snwechat.com"
网上翻阅资料发现,应该是socket等待连接数比较小,导致有大量请求来的时候部分请求被拒绝了,也就是说当大量请求到来是,服务器内核的中得配置比较小,队列就很容易满了,这个时候来连接,服务器会拒绝掉连接,客户端重试,如果下次在连接的时候还是.......客户段就会出现超时了,也就是ab中看到的错误请求数了。
参考文章:https://blog.csdn.net/haoluojie/article/details/76070191
1、修改系统的somaxnum (默认应该为128,请注意使用cp进行备份)
#在/etc/sysctl.conf中添加如下 net.core.somaxconn = 2048 #然后在终端中执行 sysctl -p #确认是否修改成功 echo /proc/sys/net/core/somaxconn
2、修改PHP-FPM配置文件(请注意备份,修改完记得重启 php-fpm restart)
listen.backlog = 2048
3、修改nginx的配置
listen 80 default backlog=2048; #80端口增加 default backlog=2048
重启之前先通过 ./nginx -t 进行语法检测