几天以来,我们的networking服务器在每个小时都有一些高负载的信号。
networking服务器是一个32GB RAM和4核心的专用服务器。 它正在运行一个沉重的Web应用程序基于Drupal与大量的存储数据和其余的API。
有一段时间,PHP-FPM过程似乎没有任何理由停止响应(没有特定的任务运行或特定的高stream量)
这里是我的池configuration(我最近增加了max_children的数量,看看它是否解决了这个问题)
pm = dynamic pm.max_children = 80 pm.start_servers = 25 pm.min_spare_servers = 10 pm.max_spare_servers = 40 pm.max_requests = 200 request_terminate_timeout = 50s
以下是一些新的屏幕截图,显示出现问题时的情况。
你可以看到大约10分钟产卵的儿童数量,然后回到正常水平。
任何想法可能会导致这些exception峰值?
[EDIT1]
更具体的系统规格,服务器也运行NGINX,MYSQL,MEMCACHED和POSTFIX。 16GB的内存分配给mysql数据库。 CPU是Intel(R)Xeon(R)CPU E3-1225 V2 @ 3.20GHz
为了在问题发生时更好地了解服务器的使用情况,可以查看新build总览的截图
[EDIT2]
这些是如何在这些派克中间的顶部看
top - 13:28:53 up 124 days, 2:15, 1 user, load average: 64.25, 25.29, 12.02 Tasks: 177 total, 77 running, 100 sleeping, 0 stopped, 0 zombie %Cpu(s): 99.9 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem: 32917328 total, 32257288 used, 660040 free, 236848 buffers KiB Swap: 1046520 total, 90328 used, 956192 free, 8352948 cached
几分钟后
top - 13:35:09 up 124 days, 2:21, 1 user, load average: 5.43, 20.97, 16.33 Tasks: 149 total, 3 running, 146 sleeping, 0 stopped, 0 zombie %Cpu(s): 47.2 us, 1.7 sy, 0.0 ni, 43.8 id, 6.4 wa, 0.0 hi, 0.8 si, 0.0 st KiB Mem: 32917328 total, 30507792 used, 2409536 free, 236852 buffers KiB Swap: 1046520 total, 90328 used, 956192 free, 8308028 cached
还检查了NGINX日志,看是否有突然增加的请求,那是这个命令的结果:
grep“15 / Sep / 2015:13”access.log | 切-d [-f2 | cut -d] -f1 | awk -F:'{print $ 2':'$ 3}'| sort -nk1 -nk2 | uniq -c | awk'{if($ 1> 10)print $ 0}'
467 13:00 463 13:01 497 13:02 421 13:03 473 13:04 471 13:05 480 13:06 390 13:07 430 13:08 430 13:09 405 13:10 449 13:11 415 13:12 451 13:13 424 13:14 476 13:15 483 13:16 398 13:17 433 13:18 474 13:19 458 13:20 434 13:21 403 13:22 408 13:23 487 13:24 440 13:25 526 13:26 70 13:27 104 13:28 373 13:29 943 13:30 706 13:31 446 13:32 447 13:33 461 13:34 427 13:35 303 13:36
我使用的是在其广告服务器上使用php-fpm的广告服务公司的系统pipe理员。 我们有max_requests设置为2万或非常高。 他们有一个问题,在我开始加载/内存/ CPU将像你看到的那样秒杀,然后在整个一天循环回落。 这是因为几乎所有的php-fpm进程都在重启,因为它几乎同时达到了max_requests限制。
你可能会遇到同样的问题。 我们通过每台机器运行4-5个php-fpm主进程并错开了启动时间来解决这个问题。
最后,我们为max_requests设置一些实例为0 ,以查看是否需要启动。 事实certificate,该应用没有任何不良的内存泄漏,每个php-fpm进程使用的内存增长非常缓慢。 这也是一个更随机的,我们最终使用监视每个php-fpm大师的内存来观察内存使用情况,如果它超过了一定的限制, monit重新启动php-fpm