上传超50MB文件触发503错误,附Apache日志异常求排查
大文件上传触发503错误的原因及解决办法
核心原因分析
从Apache error_log中的[lsphp is killed?]: SendRequest: write to backend socket failed: errno 32(errno 32对应管道破裂错误)可以确定,问题根源是LSPHP进程在处理超过50MB的大文件上传时,因配置限制被系统或服务终止,具体触发场景包括:
- PHP上传/内存/执行时间配置未适配大文件需求
- LSAPI(LiteSpeed API)的请求大小或进程资源限制过严
- 系统级别的进程资源限制截断了LSPHP进程
解决办法
1. 调整PHP核心配置
编辑PHP配置文件(路径示例:/etc/php/7.4/lsphp/php.ini,根据实际PHP版本和环境调整),修改以下参数:
# 允许的单个文件上传大小,设置为你需要的最大值(如200M) upload_max_filesize = 200M # POST请求总大小,必须大于upload_max_filesize post_max_size = 220M # PHP脚本内存限制,避免处理大文件时内存溢出 memory_limit = 256M # 脚本最大执行时间,延长至大文件上传所需时长 max_execution_time = 300
修改完成后,重启LSPHP服务:
systemctl restart lsphp74 # 替换为你的PHP版本对应的服务名
2. 调整LSAPI服务配置
编辑Apache的LSAPI配置文件(路径示例:/etc/httpd/conf.d/lsapi.conf),添加或修改以下参数:
# 允许的最大请求大小,与PHP配置的post_max_size匹配 LSAPI_MAX_REQUEST_SIZE 220M # LSPHP进程最大空闲超时时间,避免上传过程中进程被回收 LSAPI_PROCESS_MAX_IDLE_TIME 300 # LSPHP进程内存上限,与PHP的memory_limit匹配 LSAPI_MEM_LIMIT 256M
重启Apache服务使配置生效:
systemctl restart httpd # 或apache2ctl restart(Debian/Ubuntu环境)
3. 检查系统级资源限制
查看当前Apache用户的进程资源限制:
su - apache -c "ulimit -a"
如果file size或virtual memory限制过小,编辑/etc/security/limits.conf添加以下配置:
apache soft fsize unlimited apache hard fsize unlimited apache soft as unlimited apache hard as unlimited
保存后重启系统或重新加载PAM配置:
systemctl restart systemd-logind
4. 验证修复效果
上传一个超过50MB的测试文件(如150MB),同时监控Apache的error_log,若不再出现lsphp is killed相关错误,说明配置已生效。
内容的提问来源于stack exchange,提问作者Brian Millot
相关产品推荐
相关产品推荐

