PHP-FPM、MariaDB与Symfony表单查询构建器的503异常排查请求
诡异的Symfony生产环境数据库通信异常排查求助
无法精准归类当前问题,表现过于诡异,完全无法确定根源。和另一位开发者排查数小时毫无进展,不确定问题出在数据库还是PHP(显然二者通信时出现异常),希望有类似经验的人提供排查方向。问题更偏向基础设施层面而非代码问题,但暂无法确定。
系统环境
- CentOS 7 VPS
- PHP-FPM 8.1
- Symfony 6.0.11
- MariaDB 10.2.38
关键信息:Symfony处于dev环境时一切正常,仅切换至prod环境时出现问题。
问题代码
问题出在Symfony的FormType中(请求生命周期内其他代码无关,移除以下代码后问题完全消失,PHP与MariaDB的其他查询通信正常):
$builder ->add('type', EntityType::class, [ 'class' => Property::class, 'choice_label' => 'name', 'query_builder' => function (EntityRepository $er) { return $er->createQueryBuilder('p') ->orderBy('p.name', 'ASC'); } ])
错误日志信息
浏览器输出
503 Service Unavailable
服务器暂时无法处理请求,请稍后重试。
Apache服务器日志
AH01067: Failed to read FastCGI header
(104)Connection reset by peer: [client REDACTED-IP:53320] AH01075: Error dispatching request to :
PHP日志
WARNING: [pool admin] child 1770 exited on signal 11 (SIGSEGV) after 1.360270 seconds from start
MariaDB日志
[Warning] Aborted connection 2787505 to db: 'REDACTED' user: 'REDACTED' host: 'localhost' (Got an error reading communication packets)
已尝试的排查操作
- 重启整个VPS
- 手动删除Symfony缓存:
rm -r var/cache - 禁用OPcache(曾怀疑与此相关)
最诡异的现象
- 移除整个
orderBy子句后,功能恢复正常; - 将
orderBy('p.name', 'ASC')改为orderBy('p.name', 'DESC')也能正常运行; - 将
p.name替换为其他有效属性但仍使用ASC排序时,问题依旧;此时若改为DESC排序则恢复正常!
内容的提问来源于stack exchange,提问作者Avi
相关产品推荐
相关产品推荐

