PHP服务器调优

如果你使用的是Nginx-PHP架构,那么Nginx接到请求,接下来就是转发给PHP服务器进行处理了,而PHP服务器基本上现在都使用php-fpm。我们来看看php-fpm的配置中与连接数有关的配置如何优化。

PHP-FPM管理的方式是一个master主进程,多个pool进程池,多个worker子进程。其中每个进程池监听一个socket套接字。见下图:

image

在服务器负载有很大余量,业务场景请求量不大的情况下,可以考虑单台服务器开多个php-fpm进程池,每个进程池负责处理不同的业务。

来看一个php-fpm进程池的配置:

[global]
  • pm = dynamic,这个是配置如何控制子进程的,选项有static和dynamic,如果服务器配置低,比如内存只有512KB、1GB这种的,可以考虑设置成static,避免频繁的销毁和重建worker;如果配置还可以,就用dynamic

  • 如果配置成static,则worker的数量就等于pm.max_children的配置

  • 如果pm设置为dynamic,那么pm.max_children参数失效,系统会在php-fpm运行开始的时候启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数。

  • pm.max_requests是用来配置单个worker能处理的最大请求数,达到配置数量后,worker会重启

  • 一般单个worker的内存占用可以按照30M一个来计算,也可以实际测试,注意单个进程经常存在内存泄露的情况,长时间运行,单个worker的内存占用会比刚启动时高,不过一般30M一个基本够了

  • 假如服务器内存有8G,且该服务器只处理php-fpm服务,则内存和cpu负载在计算时都不要超过60%,即计算时,可以如下计算worker数,8GB * 60% / 30MB = 164个

  • 配置请求超时时间request_slowlog_timeout,并配置慢日志slowlog = /var/log/aaa-slow.log

服务推荐

发布了0 篇原创文章 · 获赞 0 · 访问量 248

猜你喜欢

转载自blog.csdn.net/weixin_46837673/article/details/105364569