您的足迹:首页 > Linux >Nginx和php-fpm简单优化

Nginx和php-fpm简单优化

1df11481187224.png

一、nginx优化


1. worker_processes 8;

nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8)。


2. worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一个进程分配到多个cpu。


3. worker_rlimit_nofile 65535;

这个指令是指当一个nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。

现在在Linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。

这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。


4. worker_connections 65535;

每个进程允许的最多连接数, 理论上每台nginx 服务器的最大连接数为

worker_processes*worker_connections。


5. keepalive_timeout 60;

keepalive 超时时间


6. client_header_buffer_size 4k;

客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。

分页大小可以用命令getconf PAGESIZE 取得




二、php-fpm优化

pph-fpm 存在两种方式,

①static(静态)是直接指定开启数量的php-fpm进程,不会再增加或者减少。
②dynamic(动态)是开始时开启一定数量的php-fpm进程,当请求量变大时,动态的增加php-fpm进程数到指定最大上限,当空闲时自动释放空闲的进程数到指定最小下限。

相关参数如下:
pm.max_children:静态方式下开启的php-fpm进程数量,在动态方式下他限定php-fpm的最大进程数。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式空闲状态下的最小php-fpm进程数量。
pm.max_spare_servers:动态方式空闲状态下的最大php-fpm进程数量。

如果pm设置为static,那么其实只有pm.max_children这个参数生效。系统会开启设置的数量个php-fpm进程。

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


1、static静态方式配置(一般适合大内存)
pm = static
pm.max_children = 300;  数量也可以根据 内存/30M 如分配2~3G   则设置100即可


2、dynamic动态方式配置(一般适合小内存),
pm = dynamic
pm.start_servers = 5    
pm.min_spare_servers = 2  则建议根据服务器的负载情况来设置,比较合适的值在5~10之间
pm.max_spare_servers = 8  最大数量根据 内存/20M 得到


本博客所有文章如无特别注明均为原创。作者:潇潇枫叶复制或转载请以超链接形式注明转自 木风溪
原文地址《Nginx和php-fpm简单优化

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)