一、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 得到
发表评论