Nginx调优

下文涉及到的相关模块的安装,请参见Nginx源码安装

1. worker_processes

  • 建议配置
# nginx.conf

# 工作进程数,建议设置为CPU核数
worker_processes 8;

# 工作进程绑定的核,建议一个工作进程绑定一个核
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

#指定进程可以打开的最大描述符,最好与ulimit -n 的值保持一致
worker_rlimit_nofile 1048576;

events {
      # 使用epoll的I/O 模型
      use epoll;

      #工作进程的最大连接数量,根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行
      #每个进程允许的最多连接数, 理论上每台nginx服务器的最大连接数为worker_processes*worker_connections
      worker_connections  65536;
}
  • 测试
    OS:CentOS release 6.5 (Final)
    CPU(8核):Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz
    内存:64G
    Nginx:1.6.0
    压测工具:https://pts.aliyun.com/lite/index.htm
    压测参数:线程(2000) * 施压机(5) * 执行时长(1min)
    
    Nginx调优_第1张图片
    worker_processes 测试结果
  • 结论
    结论1:worker_processes最好设置为CPU核数
    结论2:Nginx单台TPS大约为6W
    

2. TCMalloc

  • 建议配置
# nginx.conf
# google_perftools的线程目录
google_perftools_profiles /data/greentea/tmp/tcmalloc/tcmalloc;
  • 测试
OS:CentOS release 6.5 (Final)
CPU(8核):Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz
内存:64G
Nginx:1.6.0
压测工具:https://pts.aliyun.com/lite/index.htm
压测参数:线程(2000) * 施压机(1) * 执行时长(5min) * 预热时长(1min)
Nginx调优_第2张图片
TCMalloc 测试结果
  • 结论
结论1:开启TCMalloc,性能有显著提升

3. Real IP

  • 相关配置
 # nginx.conf
 # 还原用户真实IP
 set_real_ip_from 127.0.0.1;
 set_real_ip_from 10.0.0.0/8;
 set_real_ip_from 172.16.0.0/12;
 set_real_ip_from 192.168.0.0/16;
 real_ip_header X-Forwarded-For;
 real_ip_recursive on;
  • 测试
OS:CentOS release 6.5 (Final)
CPU(8核):Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz
内存:64G
Nginx:1.6.0
压测工具:https://pts.aliyun.com/lite/index.htm
压测参数:线程(2000) * 施压机(1) * 执行时长(5min) * 预热时长(1min)
Nginx调优_第3张图片
Real IP 测试结果
  • 结论
结论1:RealIP模块无明显性能损耗。(建议开启)

4. GEO

  • 相关配置
 # nginx.conf
 # 计算IP所在城市
 geo $remote_addr $geo_is_beijing {
      default 0;
      1.2.2.0/24 1;
      1.2.5.0/24 1;
      1.2.8.0/24 1;
      1.4.4.0/24 1;
      1.8.0.0/16 1;
}
  • 测试
OS:CentOS release 6.5 (Final)
CPU(8核):Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz
内存:64G
Nginx:1.6.0
压测工具:https://pts.aliyun.com/lite/index.htm
压测参数:线程(2000) * 施压机(1) * 执行时长(5min) * 预热时长(1min)
Nginx调优_第4张图片
GEO 性能测试
  • 结论
结论1:GEO模块无明显性能损耗。(测试区分北上广杭)

你可能感兴趣的:(Nginx调优)