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

Laravel部署后CPU占用率过高问题求助

解决Laravel在Nginx反向代理下CPU占用过高的方案

一、优化Nginx反向代理配置(适配Laravel缓存)

Laravel完全可以利用Nginx缓存降低CPU负载,针对性配置即可避免请求全量落到后端:

  • 静态资源直接缓存:让Nginx直接处理CSS/JS/图片等静态资源,无需转发到Apache
  • 缓存已做Redis HTML缓存的页面:对首页这类静态化页面,让Nginx直接缓存结果,跳过后端处理

示例Nginx配置片段:

# 缓存静态资源,有效期30天
location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
    root /path/to/laravel/public; # 直接指向Laravel静态资源目录,无需走Apache
}

# 缓存首页HTML(路由为/)
location = / {
    proxy_cache laravel_page_cache;
    proxy_cache_valid 200 10m; # 缓存时长可匹配你的Redis缓存时效
    proxy_cache_key "$host$request_uri";
    proxy_pass http://your_apache_backend; # 替换为你的Apache后端地址
}

二、调整Apache与PHP-FPM的资源配置

  1. Apache模式优化:将Apache从prefork模式改为event模式,减少进程开销,同时调整进程数:
    • 编辑httpd.conf,设置StartServers=2、MinSpareServers=2、MaxSpareServers=4,避免闲置进程占用资源
  2. PHP-FPM进程数适配:12核服务器建议配置:
    pm.max_children = 24
    pm.start_servers = 6
    pm.min_spare_servers = 4
    pm.max_spare_servers = 8
    
    避免进程过多抢占CPU资源

三、Laravel自身性能优化

  1. 关闭调试模式与冗余日志:
    • .env中设置APP_DEBUG=false,调试模式会生成大量堆栈信息,严重消耗CPU
    • config/logging.php中将日志级别改为error,减少不必要的日志写入
  2. 开启核心缓存:
    • 运行php artisan route:cache,缓存路由规则,减少每次请求的路由解析开销
    • 运行php artisan config:cache,缓存配置文件,避免重复加载
  3. 升级PHP与启用OPcache:
    • Laravel 9建议使用PHP 8.0+,CentOS 7可通过第三方源升级到PHP 8.1/8.2,性能提升显著
    • 配置OPcache扩展,加速PHP代码执行:
      opcache.enable=1
      opcache.enable_cli=1
      opcache.memory_consumption=256
      opcache.max_accelerated_files=10000
      opcache.revalidate_freq=60
      opcache.save_comments=0
      

四、其他排查方向

  • 用htop查看具体占用CPU的进程:区分是Nginx、Apache还是PHP-FPM,针对性优化
  • 临时关闭Plesk的ModSecurity模块,部分严格的安全规则会导致CPU飙升
  • 检查Plesk后台是否有自动备份、系统更新等任务在运行,抢占资源

内容的提问来源于stack exchange,提问作者Łukasz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:15:33