ubuntu

ubuntu中php-fpm内存占用过高怎么办

小樊
50
2025-08-25 18:06:32
栏目: 编程语言

  1. 优化配置参数

    • 编辑 /etc/php/{版本}/fpm/pool.d/www.conf,调整进程管理参数:
      • pm.max_children:根据服务器内存和CPU核心数计算(如 总内存-系统预留内存 ÷ 单进程内存,建议留20%冗余)。
      • pm.start_servers:设为CPU核心数的2-4倍(动态模式)。
      • pm.min/max_spare_servers:动态模式下设为CPU核心数的1-2倍,控制空闲进程数量。
      • pm.max_requests:设为500-1000,强制进程定期重启释放内存。
    • 启用ondemand模式(低负载场景),减少常驻进程数。
  2. 启用OPcache

    • 编辑php.ini,添加:
      zend_extension=opcache.so
      opcache.enable=1
      opcache.memory_consumption=64-128M  # 根据内存调整
      opcache.max_accelerated_files=4000
      
    • 重启PHP-FPM使配置生效。
  3. 优化PHP代码

    • 使用Xdebug或Blackfire排查内存泄漏,重点检查循环引用、未释放资源(如数据库连接)。
    • 避免在循环中创建大数组或重复加载文件。
  4. 监控与调优

    • 使用top/htop实时查看内存占用,重点关注RES(物理内存)和%MEM
    • 通过pm.status_path(如/status)查看FPM状态页,分析活跃进程和内存使用趋势。
  5. 硬件与系统级优化

    • 若内存不足,考虑升级服务器配置或迁移至更高规格服务器。
    • 启用HugePages(需内核支持),提升内存访问效率。

操作前建议:备份配置文件,测试环境验证后再应用到生产环境。

0
看了该问题的人还看了