Nginx配置优化参考

技术分享 Story 73浏览 0评论

       

Nginx配置优化参考                                                                                     

               

                    编辑词条                                                                                                                       
                               
                               
                   

           
           

 

           

           
                                       

摘要:本文档描述了Nginx性能测试过程中,发现的可优化性能的配置项。主要包含系统参数,以及Nginx本身配置。本文可以作为后续上线以及维护过程中的参考文档。 1、 nofile 系统打开的文件数约束。 Linux服务器必须修改这个值才能满足Nginx的要求。建议修改为102400或者更大。 修改文件 /etc/security/limits.conf 默认值 1024 参考配置 * soft nofile 102400 * hard nofile 102400 2、 net.ipv4.ip_local_port_range 本地端口使用范围,在Ng

                       
                    

                                                        目录                                
                       
  •                             1、      nofile                        
  •                             2、      net.ipv4.ip_local_port_range                        
  •                             3、      其它sysctl.conf配置                        
  •                             4、      worker_processes                        
  •                             5、      worker_cpu_affinity                        
  •                
                                                               

                                [显示全部]            

                       
 
             

   
               

                                   

本文档描述了Nginx性能测试过程中,发现的可优化性能的配置项。主要包含系统参数,以及Nginx本身配置。本文可以作为后续上线以及维护过程中的参考文档。

               
                                                                    [ 编辑本段 ]                                                 [ 回目录 ]1、      nofile   
                                   

            系统打开的文件数约束。 Linux服务器必须修改这个值才能满足Nginx的要求。建议修改为102400或者更大。

修改文件

/etc/security/limits.conf

默认值

1024

参考配置

* soft nofile 102400

* hard nofile 102400

               
                                                                    [ 编辑本段 ]                                                 [ 回目录 ]2、      net.ipv4.ip_local_port_range   
                                   

本地端口使用范围,在Nginx作为web服务器时这个参数可以忽略,但作为反向代理服务器必须修改为更大范围,高并发时可以大幅度提升Nginx性能。

修改文件

/etc/sysctl.conf

默认值

32768 61000

参考配置

net.ipv4.ip_local_port_range   = 1024 65000

               
                                                                    [ 编辑本段 ]                                                 [ 回目录 ]3、      其它sysctl.conf配置   
                                   

修改文件

/etc/sysctl.conf

参考配置

net.core.somaxconn = 2048

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_fin_timeout =   15

net.ipv4.tcp_max_tw_buckets   = 10000

net.ipv4.ip_local_port_range   = 1024 65000

fs.file-max = 102400 #与nofile保持一致

net.ipv4.tcp_mem =   1048576  1310720 1572864

net.ipv4.tcp_rmem =  4096 87380 16777216

net.ipv4.tcp_wmem =  4096 87380 16777216

net.core.rmem_max = 16777216

net.core.wmem_max =   16777216

net.ipv4.tcp_synack_retries   = 3

net.ipv4.tcp_syn_retries =   3

net.ipv4.tcp_max_syn_backlog=8192

   使用/sbin/sysctl -p来做配置刷新
               
                                                                    [ 编辑本段 ]                                                 [ 回目录 ]4、      worker_processes   
                                   

Nginx工作进程数,经过测试以及官方的建议最好配置为与CPU核数目相等,或者auto。

修改文件

nginx.conf

官方说明

http://nginx.org/en/docs/ngx_core_module.html#worker_processes

参考配置

worker_processes 8;

               
                                                                    [ 编辑本段 ]                                                 [ 回目录 ]5、      worker_cpu_affinity   
                                   

绑定Nginx工作进程到CPU核,可以使CPU负载更加均衡稳定。配置值与worker_processes以及CPU核数目有关。配置1对应绑定的核。

修改文件

nginx.conf

官方说明

http://nginx.org/en/docs/ngx_core_module.html#worker_cpu_affinity

参考配置

worker_cpu_affinity   00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

               
                                                                    [ 编辑本段 ]                                                 [ 回目录 ]6、      worker_rlimit_nofile   
                                   

Nginx工作进程能打开的文件句柄数目,建议与nofile一致。

修改文件

nginx.conf

官方说明

http://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_nofile

参考配置

worker_rlimit_nofile 102400;

               
                                                                    [ 编辑本段 ]                                                 [ 回目录 ]7、      worker_connections   
                                   

Nginx工作进程能同时打开的链接数目,建议与worker_rlimit_nofile一致。

修改文件

nginx.conf

官方说明

http://nginx.org/en/docs/ngx_core_module.html#worker_connections

参考配置

worker_connections 102400;

               
                                                                    [ 编辑本段 ]                                                 [ 回目录 ]8、      access_log   
                                   

Nginx访问日志,一般情况下建议关闭,如果不能关闭就配置缓存可以大幅度提升IO性能。

修改文件

nginx.conf

官方说明

http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log

参考配置

  1.   access_log off;
  2.   access_log   /pathto/access.log main buffer=128k flush=2m;
               
                                                                    [ 编辑本段 ]                                                 [ 回目录 ]9、      keepalive   
                                   

Nginx作为反向代理服务器时,upstream设置keepalive可以大幅度提升代理性能。如果是HTTP服务需要同时配置upstream和location。

修改文件

nginx.conf

官方说明

http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive

参考配置

upstream http_backend {

    server 127.0.0.1:8080;

    keepalive 32;

}

server {

    ...

    location /http/ {

        proxy_pass http://http_backend;

        proxy_http_version 1.1;

        proxy_set_header Connection   "";

        ...

    }

}

               
                                                                    [ 编辑本段 ]                                                 [ 回目录 ]10、 hash consistent   
                                   

Nginx反向代理的服务需要会话保持功能,在real-server个数变化的时候影响尽可能小,可以配置一致性哈希。

修改文件

nginx.conf

官方说明

http://nginx.org/en/docs/http/ngx_http_upstream_module.html#hash

参考配置

upstream ngx-backend-normal   {

    server 10.151.161.130:8080;

    server 10.151.161.131:8080;

    keepalive 32;

    hash $remote_addr consistent;

}

 

转载请注明:成长的对话 » Nginx配置优化参考