根据参数优化Nginx服务性能优化
一、优化Nginx服务的worker进程个数
目的:在高并发,高访问量的场景,实现启动数量适当的Nginx进程,保证快速响应并处理大量并发用户的请求。
1.优化Nginx进程对应的配置
worker_processes 1; #指定进程数量,Master表示管理进程,worker表示服务进程
2.优化Nginx进程个数的策略
对于新的配置,不知道网站的用户数,worker进程一般等于CPU的核数,且worker进程数要多一些,防止因为访问量快速增加而临时启动新进程提供服务的问题,缩短瞬时开销和提供服务的时间,提升服务用户的速度
在了解用户的数量时,worker_processes参数大小,设置最好和用户的数量相关联
对于高流量,高并发场合,考虑将参数提高至CPU核数的2倍,具体情况具体分析,其余CPU核数,硬盘存储的数据及系统 的负载相关
3.查看Web服务器CPU硬件资源信息
命令为:
查看CPU总核数
grep processor /proc/cpuinfo|wc -l
grep -c processor /proc/cpuinfo
查看CPU总颗数:
grep 'physical id' /proc/cpuinfo|sort|uniq|wc -l
通过top命令,然后再按1可以,显示所有的CPU颗数
4.实践修改Nginx配置
在配置文件下查看进程数:
grep worker_processes nginx.conf
修改进程数:
sed -i 's#worker_processes 1#worker_processes 4#g' nginx.conf
重新平滑启动Nginx
二、绑定不同的Nginx进程到不同的CPU上
目的:Nginx多个进程可能跑在一个CPU或者CPU的某一核上,导致Nginx引荐资源不均。
1.worker_cpu_affinity的作用是绑定不同的worker进程数到一组CPU上,通过设置bitmask控制进程允许使用的CPU,默认worker进程不会绑定到任何的CPU
三、Nginx事件处理优化模型
Linux下采用epoll的I/O多路复用模型,对于连接进程的方法,通常不需要设置,Nginx会自动选择最有效的方法。
四、调整Nginx单个进程允许的客户端最大的连接数
在events模块中的worker_connections [数字]
最大客户端的连接数为:worker_precesses*worker_connections
实际的并发连接数除了受worker_connections参数控制外,还和最大打开文件数worker_rlimit_nofule有关
五、配置Nginx worker进程最大打开文件数
参数:worker_rlimit_nofile