合理设置php-fpm参数减少服务器内存资源的浪费

PHP应用有时候出现503错误的时候可能内存不足导致访问网站无响应,当发现实际应用数理不多的情况,可以考虑检查是不是有可能由于php-fpm进程过多导致,可以通过参数配置解决问题

合理设置php-fpm参数减少服务器内存资源的浪费

所属分类: PHP
专题标签: 内存 性能 配置

关于php-fpm

php-fpm(PHP FastCGI Process Manager)。

  • 名称:PHP FastCGI 进程管理器
  • 作用:管理PHP进程池的软件,用于接受web服务器的请求

php-fpm提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。
php-fpm的出现全部因为php-fastcgi出现,为了很好的管理php-fastcgi而实现的一个程序。
php-fastcgi只是一个cgi程序,只会解析php请求,并且返回结果,不会管理(因此才出现了php-fpm)。

超高内存占用

网站访问相应503错误,很大可能由于内存不足导致。
但如像米虫是2G内存云服务器,跑一个博客网站出现内存不足,是明显不应该的。
进入Linux后台发现,内存占用92%!!!
What?黑人问号???
使用top命令分析发现,php-fpm占用了大量的内存,启用了大量的进程,特别是大量空闲进程。
一般一个php-fpm子进程约占用1%-5%的内存,50个直接就占用至少70%左右的内存。
这样明显得资源浪费真是何等的卧槽…
如下部分内存数据:

  1. PID 名称 CPU 内存 读/写 状态 线程 用户
  2. 3638 php-fpm 0% 1.961% 4.12 MB/15.21 MB sleeping 1 www
  3. 3673 php-fpm 0% 4.267% 2.47 MB/12.49 MB sleeping 1 www
  4. 3636 php-fpm 0% 5.526% 103.24 MB/12.20 MB sleeping 1 www
  5. 3639 php-fpm 0% 1.884% 272.00 KB/14.80 MB sleeping 1 www
  6. 3640 php-fpm 0% 4.503% 1.13 MB/14.27 MB sleeping 1 www
  7. 3635 php-fpm 0% 4.936% 16.62 MB/11.50 MB sleeping 1 www
  8. 3633 php-fpm 0% 5.367% 1.53 MB/11.08 MB sleeping 1 www
  9. 3637 php-fpm 0% 2.627% 1.05 MB/14.96 MB sleeping 1 www
  10. 3642 php-fpm 0% 2.049% 1.74 MB/8.32 MB sleeping 1 www
  11. 3634 php-fpm 0% 2.522% 1.13 MB/14.23MB sleeping 1 www
  12. 3791 php-fpm 0% 1.797% 144.00 KB/11.27 MB sleeping 1 www

修改进程配置

vi /etc/php-fpm.d/www.conf

  1. #允许创建的最大子进程数
  2. max_children25
  3. #起始进程数(服务启动后初始进程数量)
  4. start_servers10
  5. #最小空闲进程数(清理空闲进程后的保留数量)
  6. min_spare_servers8
  7. #最大空闲进程数(当空闲进程达到此值时清理)
  8. max_spare_servers20

处理完成后,减少空闲线程池数量,避免过多的空闲线程启动浪费资源,内存恢复正常

宝塔面板修改

如果您的环境通过宝塔面板配置,该面板提供了直接的入口进行修改软件管理。

  • 运行环境
  • 选择你启用的PHP
  • 设置
  • 性能调整