请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

LNMP环境 nginx显示Resource temporarily unavailable的问题

老师您好!生产上有个问题想请教下老师,我们是LNMP架构的,现在的问题是一遇到并发比较高的时候nginx的错误日志就会显示 unix:/dev/shm/php5.7-cgi.sock failed (11: Resource temporarily unavailable) 这种提示,然后带宽是跑满状态,但是我观察系统的负载情况,负载都不高,请问老师这是什么问题呢?是不是配置文件没有优化还是怎样?谢谢老师!!

正在回答 回答被采纳积分+3

3回答

Jeson 2018-12-23 10:15:18

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配置差异中,会和它们的匹配模式差异有关系。


0 回复 有任何疑惑可以回复我~
Jeson 2018-12-08 18:55:56

尝试优化下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。




0 回复 有任何疑惑可以回复我~
Jeson 2018-12-08 18:52:38

这种情况并发达到了多少?php的error日志分析了吗?

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_男仔头_0 #1
    但是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
    回复 有任何疑惑可以回复我~ 2018-12-08 22:31:41
  • Jeson 回复 提问者 qq_男仔头_0 #2
    但机3w的连接数都是什么状态,这个连接已经很高了,一般是不正常的,你可以分析,或者统计下这些连接都是作什么用的及状态,看下是不是那个地方没有立即释放导致。
    回复 有任何疑惑可以回复我~ 2018-12-09 17:52:06
  • 提问者 qq_男仔头_0 回复 Jeson #3
    就是ESTABLISHED的连接数,我们那个是投票项目,估计是有人在刷票,当时我们是有两台机做负载均衡的,流量都跑满了,但是系统负载也还行,没达到峰值。这个不知道如何去处理好,后来我只能通过iptables去干掉一些,但是我觉得流量跑满,但机器的还有剩余,我想是不是还有哪些点没优化好。
    回复 有任何疑惑可以回复我~ 2018-12-09 21:22:50
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信