php - pcntl_fork() 中超过 300 秒的最大执行时间

标签 php linux process centos

我有一些代理在运行,在正常模式下几周后,我们突然得到:

超过 300 秒的最长执行时间

在一条线上是

$this->pids[$next_child] = pcntl_fork();

我们还有:

[root@a ~]# ulimit -u
385913

[root@a ~]# ps ax | wc -l
400

[root@a ~]# cat /proc/sys/kernel/pid_max
4194303

strace shows

poll([{fd=4, events=POLLIN|POLLPRI|POLLHUP}], 1, 1000) = 0 (Timeout)

我们在 php5.4 centos 上,会不会是 PHP 的 bug?或者有什么问题?
更新 2 年后仍然出现此错误,从那时起我们升级到 php5.6,然后升级到 php7,现在升级到 php7.3.1

最佳答案

这个错误有点神秘。因此,我们必须进行一些调试以找出问题的根源。

注意:而不是专注于函数 pcntl_fork 或 PHP 错误。我将集中讨论这是一个系统资源问题。因为,它抛出错误的那一行包含 fork。我们会看到它从那里走向何方

  • 错误可能是错误或不重要。要对此进行测试,请将 ini_set('MAX_EXECUTION_TIME', -1); 添加到脚本的最顶部。如果您的脚本按预期运行而没有任何问题,那么它就是真的。如果不是,那么我们应该检查行为。如果您的代理在他们通常会抛出错误的时候开始为客户提供服务时出现问题,这可能意味着该错误意味着资源不足。如果不是这种情况,您应该检查代理的行为,以便您可以了解有关问题原因的更多信息。

  • 据我所知,如果您使用的是 Active URL 缓存,则该错误可能与大小过高有关。

如果问题仍然存在,您需要提供有关您的环境和配置的更多信息,以便我们为您提供帮助。

问题:您是否有机会使用 Magento?

关于php - pcntl_fork() 中超过 300 秒的最大执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23709161/

相关文章:

php - 验证后为什么我的表单数据被清除

linux - 内核更新问题修复

linux - 运行 puppet 证书列表不显示我正在寻找的证书

linux - 父进程能否知道子进程是否在coredumping

php - Messenger 永久菜单不可见

php - 有没有办法在启动时将 mongodb 索引加载到 RAM 中?

php - 检查用户名是否存在

linux - ZeroMQ:检查是否有人在 Unix 域套接字后面监听

asynchronous - 使用 Proc::Async 从绑定(bind)管道中读取

c - 了解进程的执行环境