ERROR: failed to ptrace(PEEKDATA) pid 15951: Input/output error 解决办法

网站最近经常出现这样一种情况:一会出现“502 Bad Gateway nginx",一会又恢复正常,很郁闷。

结果我查看了php-fpm.log日志,报错如下:

  1. [06-Dec-2017 15:08:32] ERROR: failed to ptrace(PEEKDATA) pid 15951: Input/output error (5)  
  2. [06-Dec-2017 15:08:32] NOTICE: finished trace of 15951
  3. [06-Dec-2017 15:08:36] ERROR: failed to ptrace(ATTACH) child 15807: Operation not permitted (1)  
  4. [06-Dec-2017 15:08:36] WARNING: [pool www] child 15807, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.006536 sec), logging
  5. [06-Dec-2017 15:08:46] WARNING: [pool www] child 15937, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.022103 sec), logging
  6. [06-Dec-2017 15:08:46] NOTICE: child 15937 stopped for tracing
  7. [06-Dec-2017 15:08:46] NOTICE: about to trace 15937
  8. [06-Dec-2017 15:08:46] ERROR: failed to ptrace(PEEKDATA) pid 15937: Input/output error (5)  
  9. [06-Dec-2017 15:08:46] NOTICE: finished trace of 15937
  10. [06-Dec-2017 15:08:47] WARNING: [pool www] child 15978, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.052748 sec), logging
  11. [06-Dec-2017 15:08:47] NOTICE: child 15978 stopped for tracing
  12. [06-Dec-2017 15:08:47] NOTICE: about to trace 15978
  13. [06-Dec-2017 15:08:47] ERROR: failed to ptrace(PEEKDATA) pid 15978: Input/output error (5)  
  14. [06-Dec-2017 15:08:47] NOTICE: finished trace of 15978
  15. [06-Dec-2017 15:08:48] WARNING: [pool www] child 15950, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.143735 sec), logging
  16. [06-Dec-2017 15:08:48] NOTICE: child 15950 stopped for tracing
  17. [06-Dec-2017 15:08:48] NOTICE: about to trace 15950
  18. [06-Dec-2017 15:08:48] ERROR: failed to ptrace(PEEKDATA) pid 15950: Input/output error (5)  
  19. [06-Dec-2017 15:08:48] NOTICE: finished trace of 15950
  20. [06-Dec-2017 15:08:55] ERROR: failed to ptrace(ATTACH) child 15807: Operation not permitted (1)  
  21. [06-Dec-2017 15:08:55] WARNING: [pool www] child 15807, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.101971 sec), logging
  22. [06-Dec-2017 15:09:01] WARNING: [pool www] server reached pm.max_children setting (40), consider raising it
  23. [06-Dec-2017 15:09:12] WARNING: [pool www] child 15992, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.313628 sec), logging
  24. [06-Dec-2017 15:09:12] NOTICE: child 15992 stopped for tracing
  25. [06-Dec-2017 15:09:12] NOTICE: about to trace 15992

 

ERROR: failed to ptrace(PEEKDATA) pid 15951: Input/output error

 

为什么会出现这个错误?

因为你有request_slowlog_timeout启用。这通常需要超过N秒的任何请求,记录它需要很长时间,然后记录脚本的堆栈跟踪,以便您可以看到正在做的事情花了那么长时间。

在你的情况下,堆栈跟踪(以确定脚本正在做什么)失败。

如果您的流程用完了,那是因为:在php-fpm停止进程追踪它之后,由于跟踪错误,进程无法恢复这个过程正在恢复,但是会一直持续下去。

 

以下文章有说明为什么会出现“502 Bad gateway”和“504 Gateway Time-out”?

pm.max_children 设置多大合适?

https://www.fujieace.com/php/pm-max_children-2.html

 

解决办法:

 

1、禁止slowlog

  1. vim php-fpm.conf  
  2. ;request_slowlog_timeout = 10s
  3. ;slowlog = /usr/local/log/php-fpm/ckl-slow.log

既然这样做不对,那可能是弊大于利。如果这不能解决流程用完的问题,请继续第二步;

 

2、修改最大执行时间

  1. vim php.ini
  2. max_execution_time = 60

 

3、重启进程

  1. /etc/init.d/php-fpm reload  

等待一段时间,看是否一切正常?

 

4、如果还不正常,只有服务器硬件升级。

 

推荐文章:

php-fpm.conf配置性能优化详解:https://www.fujieace.com/php/php-fpm-2.html

    A+
发布日期:2017年12月06日 19:21:57  所属分类:PHP
最后更新时间:2017-12-07 14:28:35
付杰
  • ¥ 159.0元
  • 市场价:599.0元
  • ¥ 298.0元
  • 市场价:398.0元
  • ¥ 0.0元
  • 市场价:99.0元
  • ¥ 45.0元
  • 市场价:45.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: