PHP 7.4 Windows环境下大参数函数抛异常致高CPU问题求助
PHP 7.4.33 FastCGI高CPU占用问题排查求助
我们有两台Windows服务器,一台已升级至PHP 7.4.33,另一台仍为PHP 7.3.x版本。升级后的服务器出现PHP FastCGI进程高CPU占用问题,我已经定位并复现了最小测试案例,但无法解释问题原因。
测试代码
function errorCausingFunction($x=null){ try{ throw new Exception("error"); } catch(Exception $e){ echo "inside Exception"; } } $x="abcdefg"; errorCausingFunction(); // test1 errorCausingFunction($x); // test2
测试现象
当$x为普通小值时,两台服务器运行速度一致。但当$x为大对象/数组(如多MB级对象、反序列化的多维数组)时,仅PHP7.4.33的第二次调用(test2)会出现严重卡顿,CPU被占满10-15分钟,$x越大,CPU占用情况越严重。
关键现象总结
- 仅PHP7.4.33出现此问题,PHP7.3无异常;
- 异常已被catch捕获,未写入日志或向上冒泡;
- 调整
zend.exception_ignore_args配置项无任何影响; - 函数未引用大参数,仅传递参数并抛出异常就会触发问题;
- 不抛异常时,代码运行完全正常;
- 无参数调用
errorCausingFunction()多次也不会出现问题。
两台服务器的php.ini配置已同步,求排查方向建议。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

