AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 406532
Accepted
MultiformeIngegno
MultiformeIngegno
Asked: 2012-07-11 12:15:59 +0800 CST2012-07-11 12:15:59 +0800 CST 2012-07-11 12:15:59 +0800 CST

PHP5-FPM 的 I/O 错误,ptrace(PEEKDATA) 失败

  • 772

我有很多这样的:

[NOTICE] child 19214 stopped for tracing 
[NOTICE] about to trace 19214 
[ERROR] ptrace(PEEKDATA) failed: Input/output error (5) 
[NOTICE] finished trace of 19214 
[WARNING] [pool www] child 19208, script 'blahblah.php' executing too slow (30.041419 sec), logging 
[NOTICE] child 19208 stopped for tracing 
[NOTICE] about to trace 19208 
[ERROR] ptrace(PEEKDATA) failed: Input/output error (5) 
[NOTICE] finished trace of 19208 
[WARNING] [pool www] child 19218, script 'blahblah.php' executing too slow (30.035029 sec), logging 

当 php 达到 max children 时(至少我认为是这种情况)它停止“工作”......现在我知道我可以增加 max_children (当前设置为 9)但是有一种方法可以阻止 php “死亡”?

我使用的是具有 1 个内核和 512 MB 内存的 VPS (PHP5-FPM 5.4.4 + APC 3.1.10)。


禁用慢速日志后,我现在得到:

WARNING: [pool www] child 1684 exited on signal 15 (SIGTERM) after 77.802376 seconds from start
NOTICE:  [pool www] child 1694 started
WARNING: [pool www] child 1377, script 'blahblah.php' (request: "GET /blahblah.php") execution timed out (38.291440 sec), terminating
WARNING: [pool www] child 1377 exited on signal 15 (SIGTERM) after 2750.295279 seconds from start
NOTICE:  [pool www] child 1696 started
WARNING: [pool www] child 1722, script 'blahblah.php' (request: "POST /blahblah.php") execution timed out (39.653910 sec), terminating
WARNING: [pool www] child 1722 exited on signal 15 (SIGTERM) after 793.953090 seconds from start

我认为这些脚本这么慢是不正常的。你建议玩max_execution_time?

php php5 php-fpm alternative-php-cache
  • 2 2 个回答
  • 24713 Views

2 个回答

  • Voted
  1. Best Answer
    DerfK
    2012-07-11T14:08:28+08:002012-07-11T14:08:28+08:00

    看来你已经request_slowlog_timeout启用了。这通常需要超过 N 秒的任何请求,记录它花费了很长时间,然后记录脚本的堆栈跟踪,这样你就可以看到它做了什么花了这么长时间。

    在您的情况下,堆栈跟踪(以确定脚本正在做什么)失败。如果您的进程用完了,那是因为:

    1. php-fpm停止进程trace后,进程resume失败,因为tracing it出错
    2. 该过程正在恢复,但会一直运行下去。

    我的第一个猜测是禁用 request_slowlog_timeout。由于它无法正常工作,因此弊大于利。如果这不能解决进程耗尽的问题,那么将 php.ini 设置max_execution_time为肯定会终止脚本的内容。

    • 6
  2. Shrenik
    2016-07-03T21:46:13+08:002016-07-03T21:46:13+08:00

    对ptrace(PEEKDATA) 失败的更有效解释似乎是这样的——

    ...当主人确定执行缓慢时,工人可以自由离开。当停止跟踪时,它可能已经完成该执行并处于服务于另一个请求的任何阶段,因此跟踪器有可能失败或更糟,倾倒出不相关执行的堆栈。

    来自FPM Slowlog sucks,它更详细地解释了整个混乱。

    • 1

相关问题

  • 用户特定的 Php.ini 当 php 作为模块运行时?

  • 使 php mail() 函数在 ubuntu-server 上工作的步骤是什么?

  • Web 服务器和数据库服务器位于完全不同的位置

  • PHP 作为 CGI 还是 Apache 模块?

  • 通过 VPN 连接什么是远程服务器 IP?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve