PHP 8.1-FPM子进程无明显原因终止且无法重启的问题求助(已确认与Shopware 6.5相关)
PHP 8.1-FPM子进程无明显原因终止且无法重启的问题求助(已确认与Shopware 6.5相关)
各位大佬好!我们团队卡这个问题已经好几周了,各种调试都没解决,现在实在没办法了来求大家帮忙!
我们搭建了一套可以快速创建Shopware 5和Shopware 6测试实例的系统,都是标准的LAMP环境,没有什么特殊的自定义配置。
现在遇到的问题是:运行一段时间后(时间不定),PHP 8.1-FPM的子进程会突然崩溃,而且无法自动重启,直接导致对应的测试实例返回空白页面。目前只有手动执行systemctl restart/reload php8.1-fpm才能恢复服务。
特别奇怪的是,我们同时在用多个PHP版本的FPM(5.6、7.2、7.4、8.0、8.2),但只有PHP 8.1出现这个问题,其他版本都完全正常。而且所有PHP版本的配置都是完全一致的,我们用的是Sury仓库的最新版PHP 8.1.18。
我们已经开启了DEBUG模式,出现问题时访问页面会得到以下日志信息:
[08-Jun-2023 14:02:36.220848] DEBUG: pid 613368, fpm_children_make(), line 407: blocking signals before child birth [08-Jun-2023 14:02:36.221667] DEBUG: pid 613368, fpm_children_make(), line 431: unblocking signals, child born [08-Jun-2023 14:02:36.221679] NOTICE: pid 613368, fpm_children_make(), line 437: [pool hidden] child 666067 started [08-Jun-2023 14:02:36.323769] DEBUG: pid 613368, fpm_event_loop(), line 440: event module triggered 1 events [08-Jun-2023 14:02:36.327076] DEBUG: pid 613368, fpm_got_signal(), line 82: received SIGCHLD [08-Jun-2023 14:02:36.327089] DEBUG: pid 613368, fpm_event_loop(), line 440: event module triggered 1 events [08-Jun-2023 14:02:36.327103] WARNING: pid 613368, fpm_children_bury(), line 258: [pool hidden] child 666067 exited with code 70 after 0.105426 seconds from start
我们已经排查过以下内容,但都没找到问题根源:
- 检查过服务器负载,几乎完全没被利用,资源充足
- 多次调整FPM池的配置参数,试过各种组合
- 搜索过PHP 8.1-FPM相关的BUG,但没找到匹配的情况
下面是我们的相关配置信息:
FPM池配置(每个实例的池配置一致)
[hidden] user = hidden group = hidden listen = /run/php/php8.1-fpm-hidden.sock listen.owner = www-data listen.group = www-data listen.mode = 0660 pm = ondemand # 一开始用的dynamic模式,后来换成ondemand也一样出问题 pm.max_children = 124 pm.start_servers = 32 pm.process_idle_timeout = 10s pm.min_spare_servers = 32 pm.max_spare_servers = 64 pm.max_requests = 5000 # 这些pm相关的参数我们调过无数次,都没解决问题 php_admin_value[open_basedir] = /home/hidden:/dev/urandom php_admin_value[sys_temp_dir] = /home/hidden/files/php/tmp php_admin_value[upload_tmp_dir] = /home/hidden/files/php/tmp php_admin_value[error_log] = /home/hidden/files/php/php-error.log php_admin_flag[log_errors] = on
php-fpm.conf(仅修改了以下内容,调试用,有无这些配置问题都会出现)
log_level = debug emergency_restart_threshold = 3 emergency_restart_interval = 1m process_control_timeout = 10s
php.ini(仅修改了内存限制,其他默认)
memory_limit = 4G
服务器硬件配置
- 系统:Ubuntu 22.04.2
- 内存:128GB DDR5 ECC RAM
- CPU:AMD Ryzen™ 9 7950X3D(16C/32T)
- 存储:2x 1.92TB NVMe(RAID 1)
如果需要更多信息或者日志,随时跟我说!非常感谢各位的任何提示和排查思路,我们已经把这几周的调试信息都整理出来了,希望能找到解决办法!
备注:内容来源于stack exchange,提问作者Rafael
相关产品推荐
相关产品推荐

