// 固定的
- 该问题与 Shopware 6.5 有关
经过数周的失败调试后,我们现在希望得到帮助。
我们有一个系统,可以在其中为 Shopware 5 和 Shopware 6 创建测试实例。这些应用程序并不特殊,可以在 LAMP 上运行,无需任何特定配置。
具体来说,问题在于,经过一段不确定的时间后,由于未知原因,PHP 子进程崩溃并无法重新启动。因此,实例返回空白页。它们只有在执行systemctl restart/reload php8.1-fpm
问题在于我们使用的是不同的 PHP 版本(FPM 5.6、7.2、7.4、8.{0..2})。但是,问题只发生在 PHP 8.1 FPM 上;所有其他 PHP 版本都没有这个问题。PHP 版本的配置都是相同的。
PHP 版本来自 Sury 存储库并且都是最新的(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
我们已经检查了以下事项:
- 检查服务器负载,发现几乎没有充分利用
- 多次修改池配置
- 查找与 PHP 8.1 FPM 相关的错误(至少找不到任何东西)
每个池的 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 # tried also with dynamic first
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
# played with the pm. settings a thousand times
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 内存
- 16C/32T (AMD 锐龙™ 9 7950X3D)
- 2x 1.92TB NVMe(RAID 1)
如果您需要更多信息,请随时询问。我们很感激任何提示和进一步的联系。我们尽力总结了过去几周的信息。