操作系统:CentOS Linux 版本 7.6.1810(核心)
错误日志:/var/log/httpd/error.log
Apache 版本:Apache/2.4.6
在尝试调试 PHP cron 任务时,我在 error.log 中看到在尝试执行时出现一些段错误。每个段错误记录都位于上一行,前面是针对不同进程 ID 的“无法终止进程”错误(例如):
Sun Apr 14 18:18:27 2019 (1893): Error Cannot kill process 1169: Success!
[Sun Apr 14 18:18:27.170950 2019] [core:notice] [pid 6755] AH00052: child pid 1893 exit signal Segmentation fault (11)
第一行的进程 ID(显然还有时间戳)对于每个实例都是不同的。它永远不会与第二行中的 pid 或子 pid 相同。
我找不到有关此错误消息的任何信息。它并不容易搜索。
基本过程是,我在 Drupal 8.6.12 中运行一些 PHP (7.1.27) cron 任务,crontab 使用 Drupal 站点 cron URL 上的 wget 检查是否有任何任务落后于计划,并运行任何落后的任务。有一个每周任务(运行一些非常慢的 MySQL 查询)似乎失败了,因为 httpd 在任务执行过程中完全停止了(我不确定这是否是事实,但我掌握的证据指向这一点),这意味着 Drupal 因此无法记录成功或失败,并且在下一次 crontab 运行时,它会尝试再次运行它,认为它尚未运行。我相信这就是这些段错误告诉我的,但我无法理解“成功!”错误消息。我不确定这个错误报告了什么,以便能够进一步调试。
编辑:来自 httpd -l 的附加信息:
Compiled in modules:
core.c
mod_so.c
http_core.c
来自httpd -V的信息:
Server MPM: prefork
threaded: no
forked: yes (variable process count)
编辑:更改了我的配置以使用 php-fpm 和事件 MPM,但不幸的是,cron 任务仍然崩溃,现在我看到的是“zend_mm_heap 损坏”而不是段错误。但我猜段错误在技术上已经消失了。