You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel项目部署Apache2后出现内存耗尽错误,求排查解决方法

Laravel部署Apache后内存耗尽问题排查与解决

排查方向

  • 核对PHP配置文件的内存限制:Apache使用的PHP配置文件通常和Laravel内置服务器(artisan serve)的CLI配置文件不是同一个,先确认web环境下的memory_limit设置。
  • 查看Laravel应用日志:检查storage/logs目录下的日志文件,定位是否存在无限循环、大量数据未分页加载、递归调用未终止等导致内存泄漏的代码逻辑。
  • 分析Apache访问日志:确认是否有爬虫高频请求、特定路由重复触发等情况,导致内存占用累积。
  • 检查Composer自动加载状态:部署后是否未执行优化命令,导致自动加载机制占用额外内存。

解决步骤

  • 调整PHP内存限制

    1. 在项目根目录创建phpinfo.php,内容为:<?php phpinfo(); ?>
    2. 访问该文件,找到Loaded Configuration File项,获取Apache对应的PHP配置文件路径
    3. 打开配置文件,修改memory_limit = 256M(或根据需求调整为512M)
    4. 重启Apache服务,使配置生效
  • 优化应用代码

    • 数据库查询避免一次性加载全量数据,改用->paginate()或->chunk()处理大量数据
    • 检查递归函数是否存在未正确终止的情况,及时修复逻辑漏洞
    • 对不再使用的大变量执行unset()释放内存
  • 优化Composer自动加载
    在项目根目录执行命令:composer dump-autoload --optimize,生成优化后的自动加载文件,降低内存占用

  • 启用OPcache
    在PHP配置文件中添加或修改以下配置:

    opcache.enable = 1
    opcache.memory_consumption = 128
    opcache.max_accelerated_files = 10000
    

    重启Apache后,OPcache会缓存编译后的PHP代码,减少重复编译带来的内存消耗

  • 调整Apache进程配置
    若存在Apache进程内存泄漏,可修改MPM配置(如prefork模式下的MaxRequestPerChild),设置进程处理一定数量请求后自动重启,避免内存持续累积

内容的提问来源于stack exchange,提问作者Міша Корнійчук

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 04:35:14