当CPU 100%处于低优先级进程时,PHP-FPM不响应

当CPU 100%处于低优先级进程时,PHP-FPM不响应,php,php-7.2,fedora-29,Php,Php 7.2,Fedora 29,当CPU使用率为100%时,我遇到了一个问题:PHP-FPM没有响应,即使使用100%CPU的进程也以最低优先级(+19)运行 让我解释一下:我的站点使用inotify+bash脚本触发音频转换器(ffmpeg)。转换器正在使用“nice-n 19”运行。因此,CPU使用率为100%,但理论上,PHP-FPM具有优先级(默认优先级为0) 发生了什么:只有PHP冻结。Apache可以响应JPG/CSS/JS等文件。Linux稳定,其他软件也稳定。php返回“504网关超时”(浏览器,Apache响

当CPU使用率为100%时,我遇到了一个问题:PHP-FPM没有响应,即使使用100%CPU的进程也以最低优先级(+19)运行

让我解释一下:我的站点使用inotify+bash脚本触发音频转换器(ffmpeg)。转换器正在使用“nice-n 19”运行。因此,CPU使用率为100%,但理论上,PHP-FPM具有优先级(默认优先级为0)

发生了什么:只有PHP冻结。Apache可以响应JPG/CSS/JS等文件。Linux稳定,其他软件也稳定。php返回“504网关超时”(浏览器,Apache响应)。Apache会打开许多php fpm实例并保持它们的打开状态

30585 fedora    19   0.0   0.3   0:00.00 snippeter
30586 fedora    19  25.0   2.8   0:00.10 ffmpeg

15640 fedora     0   0.0   1.0   0:00.12 php-fpm
17174 fedora     0   0.0   1.0   0:00.10 php-fpm
20583 fedora     0   0.0   0.9   0:00.00 php-fpm
21072 fedora     0   0.0   0.9   0:00.00 php-fpm
21309 fedora     0   0.0   0.9   0:00.00 php-fpm
22601 fedora     0   0.0   0.9   0:00.00 php-fpm
23172 fedora     0   0.0   0.9   0:00.00 php-fpm
23277 fedora     0   0.0   0.9   0:00.00 php-fpm
24170 fedora     0   0.0   0.9   0:00.00 php-fpm
24823 fedora     0   0.0   0.9   0:00.00 php-fpm
24916 fedora     0   0.0   0.9   0:00.00 php-fpm
26589 fedora     0   0.0   0.9   0:00.00 php-fpm

%Cpu(s):  8.5 us,  4.5 sy, 85.6 ni,  0.0 id,  0.5 wa,  1.0 hi,  0.0 si,  0.0 st
更改php fpm优先级(renice),没有区别

我不知道该怎么办。。。我想在后台运行进程,即使使用100%的CPU,但要保持PHP+Apache正常运行

服务器:Fedora29,PHP7.2。

找到了解决方案

该问题与100%的CPU使用率无关,也与一个CPU无关。由于我有一个循环来打开每个音频转换器(bash文件),并等待它完成以运行下一个,因此PHP会话被锁定!因此,当同一会话中的另一个PHP脚本尝试执行时,它无法读取会话文件,因此,PHP冻结(等待访问会话文件,直到出现“网关超时”错误)。这就是为什么只有PHP冻结,而不是其他软件

要修复此问题,我必须在主循环之前运行:

session_write_close();
session_start(['read_and_close'=>true]);
因此,它写入并关闭会话文件,然后再次读取它,而不锁定它


这只适用于PHP7+,显然,您不能编写任何会话数据。或者,在循环结束后,只需使用
session\u start()

再次打开会话服务器中有多少CPU?1个CPU,这是一个VPS。考虑到托管的价格,我只需向它扔另一个CPU,至少我知道这不会回答问题,但总的来说,我建议您将ffmpeg处理卸载到第二个VPS,该VPS只处理ffmpeg处理,这样您就不会妨碍另一个(似乎更相关/更关键的过程,如php fpm)您可以使用像Amazon Elastic Transcoder这样的专用服务。,