首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当CPU在低优先级进程中为100%时,PHP-FPM没有响应

当CPU在低优先级进程中为100%时,PHP-FPM没有响应
EN

Stack Overflow用户
提问于 2019-01-17 22:58:03
回答 1查看 1.2K关注 0票数 1

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

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

发生什么:只有PHP冻结。Apache可以响应像JPG/CSS/JS这样的文件。Linux稳定,其他SWs也是。所有.php返回"504网关超时“(浏览器、)。Apache会打开很多php实例并保持其打开。

代码语言:javascript
复制
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优先级(renice),没有差别。

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

服务器: Fedora 29,PHP7.2。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-07 20:22:25

找到解决办法了!

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

要解决这个问题,我必须在主循环之前运行它:

代码语言:javascript
复制
session_write_close();
session_start(['read_and_close'=>true]);

因此,它写入和关闭会话文件,并再次读取它一次,而不锁定它。

这只适用于PHP,显然,您不能编写任何会话数据。或者,在循环之后,使用session_start()再次打开会话。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54245496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档