php-fpm参数优化【转】

转自

php-fpm参数优化 | Linux运维笔记
https://blog.linuxeye.com/380.html

php-fpm进程设置多少合适,设成动态还是静态?

lnmp一键安装包》中会根据你服务器内存调整php-fpm进程数。

下面是摘自Google讨论话题:《 PHP-FPM on highload tips 》[墙外,FQ可参考goagent]。

When you running a highload website with PHP-FPM via FastCGI, the following tips may be useful to you

如果你的高负载网站使用PHP-FPM管理FastCGI,也许下面这些技巧对你有用

1. Compile PHP‘s modules as less as possible, the simple the best (fast);

尽量少安装PHP模块,最简单是最好(快)的

2. Increas PHP FastCGI child number to 100 and even more. Sometime, 200 is OK! ( On 4GB memory server);

把你的PHP FastCGI子进程数调到100或以上,在4G内存的服务器上200就可以(建议压力测试来得出自己服务器合理的值)

3. Using SOCKET PHP FastCGI, and put into /dev/shm on Linux;

socket连接FastCGI,/dev/shm是内存文件系统,socket放在内存中肯定会快些

4. Increase Linux "max open files", using the following command (must be root):

Linux下增加文件打开数,命令如下:

  1. cat >> /etc/security/limits.conf <<EOF
  2. * soft nproc 65535
  3. * hard nproc 65535
  4. * soft nofile 65535
  5. * hard nofile 65535
  6. EOF

5. Increase PHP-FPM open file description rlimit:

增加 PHP-FPM 打开文件描述符的限制:

  1. # vi $php_install_dir/etc/php-fpm.conf
  2. rlimit_files = 51200

6. Using PHP code accelerator, e.g eAccelerator, XCache. And set "cache_dir" to /dev/shm on Linux.

使用php代码加速器,例如 eAccelerator, XCache.在Linux平台上可以把`cache_dir`指向 /dev/shm

/usr/local/php/etc/php-fpm.conf重要优化参数详解:

  1. pm = dynamic

pm参数指定了进程管理方式,有两种可供选择:static或dynamic,从字面意思不难理解,为静态或动态方式。如果是静态方式,那么在php-fpm启动的时候就创建了指定数目的进程,在运行过程中不会再有变化(并不是真的就永远不变);而动态的则在运行过程中动态调整,当然并不是无限制的创建新进程,受pm.max_spare_servers参数影响;动态适合小内存机器,灵活分配进程,省内存。静态适用于大内存机器,动态创建回收进程对服务器资源也是一种消耗

  1. pm.max_children = 24

static模式下创建的子进程数或dynamic模式下同一时刻允许最大的php-fpm子进程数量

  1. pm.start_servers = 16

#动态方式下的起始php-fpm进程数量

  1. pm.min_spare_servers = 12

#动态方式下服务器空闲时最小php-fpm进程数量

  1. pm.max_spare_servers = 24

#动态方式下服务器空闲时最大php-fpm进程数量

一般php-fpm进程占用20~30m左右的内存就按30m算。如果单独跑php-fpm,动态方式起始值可设置物理内存Mem/30M,由于大家一般Nginx、MySQL都在一台机器上,于是预留一半给它们,即php-fpm进程数为$Mem/2/30。

LNMP在一台机器上参数(仅供参考,建议压力测试得出):

  1. Mem=`free -m | awk ‘/Mem:/{print $2}‘` #我的机器内存是987M
  2. sed -i "[email protected]^pm.max_children.*@pm.max_children = $(($Mem/2/20))@" $php_install_dir/etc/php-fpm.conf
  3. sed -i "[email protected]^pm.start_servers.*@pm.start_servers = $(($Mem/2/30))@" $php_install_dir/etc/php-fpm.conf
  4. sed -i "[email protected]^pm.min_spare_servers.*@pm.min_spare_servers = $(($Mem/2/40))@" $php_install_dir/etc/php-fpm.conf
  5. sed -i "[email protected]^pm.max_spare_servers.*@pm.max_spare_servers = $(($Mem/2/20))@" $php_install_dir/etc/php-fpm.conf

987M内存:

  1. pm = dynamic
  2. pm.max_children = 24
  3. pm.start_servers = 16
  4. pm.min_spare_servers = 12
  5. pm.max_spare_servers = 24

Mon Nov 18 12:03:26 CST 201

时间: 2024-10-10 16:02:24

php-fpm参数优化【转】的相关文章

MySQL参数优化

目前针对MySQL数据库进行了一些参数优化,具体如下: my.ini / my.cnf 参数说明 #使用查询缓存 query_cache_size=100M                     #设置MySQL查询缓存的大小,如果MySQL收到同样的查询语句且数据未发生变化,则直接返回缓存中的数据 query_cache_type=1                        #1:开启缓存,0:关闭 innodb_buffer_pool_size=128M              #

MySQL缓存参数优化(转)

MySQL 数据库性能优化之缓存参数优化 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作.而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级.所以,要优化数据库,首先第一步需要优化的就是 IO,尽可能将磁盘IO转化为内存IO.本文先从 MySQL 数据库IO相关参数(缓存参数)的角度来看看可以通过哪些参数进行IO优化. query_cache_size/query_cache_type (global) Qu

nginx防盗链和内核参数优化

防盗链:防止别人直接从你网站引用图片等链接,消耗了你的资源和网络流量.有几种解决方法:1,水印,品牌宣传,带宽,服务器足够.2,防火墙,直接控制,前提是知道ip来源.3,防盗链策略下面的方法直接给与404错误提示 location ~* ^.+\.(jpg | gif | png | swf | flv | wma | wmv | asf | mp3 | mmf | zip | rar)$ { if ($invalid_referer) { #retrun 302 http://www.tanh

TCP/IP及内核参数优化调优

Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等.如下配置是写在sysctl.conf中,可使用sysctl -p生效,相关参数仅供参考,具体数值还需要根据机器性能,应用场景等实际情况来做更细微调整. net.core.netdev_max_backlog = 400000#该参数决定了,网络设备接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目. net.c

阿里价值“千万”的秒杀场景参数优化

秒杀最早来自天猫双11各种商品的促销活动中,现在已经有很多业务场景在使用,比如抢红包,抢票等.其特点有三高:瞬时并发高,数据一致性高,热点更新频度高.这样三高的场景下往往给数据库造成极大的压力,大量更新数据库中的同一行,这样必然会产生锁等待,导致数据库的性能急剧下降的问题,很容易出现雪崩效应.笔者记得有一年春节,一个电视台定时在整点发放红包,结果由于压力太高,导致更新数据库红包数额的请求全部堆积,业务全部挂掉,面对这样的情况我们当时也束手无策. 面对秒杀业务的场景,数据库成为了底层系统中最重要的

linux 内核参数优化

linux 内核参数优化 Sysctl命令及linux内核参数调整 一.Sysctl命令用来配置与显示在/proc/sys目录中的内核参数.如果想使参数长期保存,可以通过编辑/etc/sysctl.conf文件来实现. 命令格式: sysctl [-n] [-e] -w variable=value sysctl [-n] [-e] -p (default /etc/sysctl.conf) sysctl [-n] [-e] –a 常用参数的意义: -w  临时改变某个指定参数的值,如 # sy

linux内核参数优化调优

TCP/IP及内核参数优化调优 Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等.如下配置是写在sysctl.conf中,可使用sysctl -p生效,相关参数仅供参考,具体数值还需要根据机器性能,应用场景等实际情况来做更细微调整. net.core.netdev_max_backlog = 400000#该参数决定了,网络设备接收数据包的速率比内核处理这些包的速率快时,允许送到队列

Zabbix配置文件的参数优化和Zabbix的数据库优化

Zabbix配置文件的参数优化 StartPollers=60 StartPollersUnreacheable=80 StartTrappers=20 StartPingers=100 StartDiscoverers=120 #zabbix提示进程繁忙时修改此参数,最大二百五,建议100左右,值大消耗cpu性能大 CacheSize=1024M StartDBSyncers=16 HistoryCacheSize=1024M TrendCacheSize=1024M HistoryTextC

OpenCV中的SVM参数优化

OpenCV中的SVM参数优化 标签: svm参数优化opencv SVMSVR参数优化CvSVMopencv CvSVM 2014-08-19 10:31 2995人阅读 评论(8) 收藏 举报  分类: 机器学习(11)  opencv(18)  版权声明:本文为博主原创文章,未经博主允许不得转载. SVM(支持向量机)是机器学习算法里用得最多的一种算法.SVM最常用的是用于分类,不过SVM也可以用于回归,我的实验中就是用SVM来实现SVR(支持向量回归). 对于功能这么强的算法,OpenC

视频编码器评估与参数优化

视频编码器评估与参数优化是个比较麻烦的问题,主要原因是:编码器种类多,输入的参数繁多,参数的相互影响非线性,深入理解其实现需要投入巨大的精力或者不可能(对于商业产品而言).而另一方面,评估和选择编码器.针对特定的目标选择最优的编码参数组合对于视频服务商--比如视频网站来说,是一个现实的需要.有感于或者苦恼于如何选择最优的方案,笔者通过对多目标优化方法的尝试进行了一定的探索,之所以选择这种方法,主要原因是它比较"暴力"和"傻瓜",并不需要过多的纠缠参数的涵义f'(*∩