[备忘]lnmp2018年3月29日优化笔记

2018-5-23更新: 对于云主机,负载高,极有可能是php-fpm.conf设置不对,该怎么设置,请参照以下文章,重点:pm.max_chindren不是越大越好,对于系统反而是拖累,请注意!!!一定要看以下文章,
PHP-FPM pm.max_chindren该怎么设置?是不是越大越好?
根据我的测试,云主机1核pm.max_chindren设置2足够,4核云主机pm.max_chindren设置为8即可,否则会导致负载奇高,这与虚拟主机的虚拟化技术中资源的调度也有极大关系,如果你使用的独立服务器,可以稍微设置大些,云主机单机情况下,对于高并发应用及密集计算型或数据库操作频繁的应用或网站并不适用,要达到同样的性能实际成本比使用独立服务器还高,怎么取舍,仁者见仁智者见智!!!

最近老是觉得有个网站的云服务器负载高,一直没有找到原因

今天突然想起php-fpm进程创建的问题上

php-fpm配置文件路径

1
/usr/local/php/etc/php-fpm.conf

测试了一下,有明显提升效果
重点:
原php-fpm.conf中的设置
pm = dynamic
服务器的php-fpm配置中 进程设置为动态调节,需要创建新的进程再行创建
对于一般小型网站和个人博客来说,这没有问题,因为并发低,访客少
由于创建php-fpm的时候需要调用系统资源,并且会与mysql建立新的连接
一旦访客数量较多 并发多的时候,这个创建过程就会消耗大量的资源,对于mysql数据库来说也是一个负担

所以把pm = dynamic修改为了静态模式pm = static,并重新根据并发和内存冗余,设定了pm.max_children值
注意:每个pm.max_children需要消耗30M左右的内存,
不要设置太高,否则撑爆内存,得给内存预留部分冗余,避免其他服务没有足够内存而挂起

附上此次修改的配置中关键配置的说明:

1
2
3
4
5
6
7
8
9
pm = static
#php-fpm进程启动模式,pm可以设置为static和dynamic和ondemand
#如果选择static,则进程数就数固定的,由pm.max_children指定固定的子进程数。

#如果选择dynamic,则进程数是动态变化的,由以下参数决定:
pm.max_children = 60 #子进程最大数

pm.max_requests = 2000
#设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 '0' 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0.

访客并发和绝对数量较低的情况下,不容易发现这问题,

原文链接:https://xiaohost.com/2494.html,转载请注明出处。
0

评论0

请先