温馨提示×

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

小樊
45
2025-02-25 20:05:01
栏目: 编程语言
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

当Ubuntu中的php-fpm内存占用高时,可以通过以下步骤进行排查和解决:

1. 确认内存占用情况

首先,使用 free -m 命令查看当前服务器的内存使用情况,确认内存是否确实不足。

free -m

2. 查看php-fpm进程

使用 ps aux | grep php-fpm 命令查看当前php-fpm进程的详细信息,包括进程数、内存占用等。

ps aux | grep php-fpm

3. 调整php-fpm配置文件

编辑php-fpm的配置文件,通常位于 /etc/php/版本/fpm/pool.d/www.conf(其中“版本”是PHP的版本号,例如 7.4)。

  • 调整 pm.max_children:这个参数控制php-fpm可以创建的子进程的最大数量。根据服务器的内存和CPU核心数来设置一个合理的值。例如,如果服务器有8GB内存和4个CPU核心,可以将 pm.max_children 设置为 20-30
  • 调整 pm.start_servers:这个参数控制启动时创建的子进程数量。可以设置为 pm.max_children 的5%-10%。
  • 调整 pm.min_spare_serverspm.max_spare_servers:这两个参数控制空闲子进程的数量。通常可以设置为 pm.max_children 的20%-40%。
  • 调整 pm.max_requests:这个参数控制每个子进程在处理一定数量的请求后自动重启。可以设置为 5001000,以避免内存泄漏。

4. 重启php-fpm服务

修改配置文件后,使用以下命令重启php-fpm服务以应用更改。

sudo systemctl restart php版本-fpm

(将“版本”替换为实际的PHP版本号)

5. 监控内存使用情况

重启服务后,再次使用 free -mps aux | grep php-fpm 命令监控内存使用情况,确认内存占用是否已经降低。

6. 考虑使用动态模式

如果使用的是静态模式(pm.max_children 为固定值),可以考虑切换到动态模式,这样可以根据实际需求自动调整进程数量,从而减少内存占用。

7. 检查PHP代码

检查PHP代码中是否存在内存泄漏或不必要的内存消耗。可以使用一些工具如Xdebug来帮助分析内存使用情况。

8. 启用OpCache

如果还没有启用,可以考虑为PHP启用OpCache扩展,这可以显著提高PHP脚本的执行速度,减少内存使用。

zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=64
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60

通过上述步骤,可以有效降低php-fpm在Ubuntu系统中的内存占用。记得在调整配置后,持续监控服务器的性能,以确保调整是有效的。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:Ubuntu中php-fpm内存占用过高怎么解决

0