采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师您好!生产上有个问题想请教下老师,我们是LNMP架构的,现在的问题是一遇到并发比较高的时候nginx的错误日志就会显示 unix:/dev/shm/php5.7-cgi.sock failed (11: Resource temporarily unavailable) 这种提示,然后带宽是跑满状态,但是我观察系统的负载情况,负载都不高,请问老师这是什么问题呢?是不是配置文件没有优化还是怎样?谢谢老师!!
php这一块,设置到300一般而言差不多了,能不能网上再加,这个取决你机器的配置性能、代码的支持程度,如:你再向上设置,数据库的并发连接也会很高,如果不及时回收的话,很有可能造成数据库端的访问压力。
两个location的问题,它们两个配置匹配模式是不一样的,如下例:
location /user/ {
[ configuration C ]
}
location ~ \.(gif|jpg|jpeg)$ {
[ configuration E ]
请求/user/index.html匹配C。首先找到最长匹配C,由于后面没有匹配的正则,所以使用最长匹配C。
请求/user/1.jpg匹配E。首先进行前缀字符的查找,找到最长匹配项C,继续进行正则查找,找到匹配项E。因此使用E。
所以,如果出现你这样的问题,在你的整体nginx配置差异中,会和它们的匹配模式差异有关系。
尝试优化下php-fpm的资源池配置参数:
2.1进程数
php-fpm初始/空闲/最大worker进程数
pm.max_children = 300
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
2.2最大处理请求数
最大处理请求数是指一个php-fpm的worker进程在处理多少个请求后就终止掉,master进程会重新respawn一个新的。
这个配置的主要目的是避免php解释器或程序引用的第三方库造成的内存泄露。
pm.max_requests = 10240
2.3最长执行时间
最大执行时间在php.ini和php-fpm.conf里都可以配置,配置项分别为max_execution_time和request_terminate_timeout。
这种情况并发达到了多少?php的error日志分析了吗?
但是netstat 的在线连接数达到3W ,php 的error log没有日志,但是php-fpm就有一下报错: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 1378 total children 我的php-fpm的配置参数大致如下: pm = dynamic pm.max_children = 1500 pm.start_servers = 150 pm.min_spare_servers = 150 pm.max_spare_servers = 200 pm.max_requests = 2048 pm.process_idle_timeout = 20s request_terminate_timeout = 0
但机3w的连接数都是什么状态,这个连接已经很高了,一般是不正常的,你可以分析,或者统计下这些连接都是作什么用的及状态,看下是不是那个地方没有立即释放导致。
就是ESTABLISHED的连接数,我们那个是投票项目,估计是有人在刷票,当时我们是有两台机做负载均衡的,流量都跑满了,但是系统负载也还行,没达到峰值。这个不知道如何去处理好,后来我只能通过iptables去干掉一些,但是我觉得流量跑满,但机器的还有剩余,我想是不是还有哪些点没优化好。
登录后可查看更多问答,登录/注册
中间件、负载均衡、应用层安全防护、动静分离、Nginx+LUA开发等
3.2k 10
2.2k 12
1.1k 12
1.8k 11