A-A+

Nginx配置优化说明

2013年05月09日 未分类 Nginx配置优化说明已关闭评论 阅读 98 次
  • Nginx配置可优化项
    # worker_processes的数目应该不多于服务器的CPU的核数目,
    # 每个CPU核超过1个worker不会使得Nginx性能有什么提升
    worker_processes 24;
    
    # 给Nginx使用的文件描述符的数目.这个需要一起设置系统内核参数'ulimit -n 200000'
    # 或修改'/etc/security/limits.conf', 参考《高负载Linux调优》
    worker_rlimit_nofile 200000;
    
    # 设定每个worker进程最多可以服务多少客户端,
    # Max clients = worker_connections * worker_processes
    # "Max clients"其实也受到系统可使用的socket连接(socket connections)的限制,大约是64K
    worker_connections 4000;
    
    # 对于Linux系统来说选择epoll,那样每个线程可以服务更多的客户端
    use epoll;
    
    # 在Nginx获得有新连接的通知之后,接受尽可能多的连接
    # 需要注意的是:如果worker_connections设置太低的话,这样可能会造成拥堵
    multi_accept on;
    
    # 缓存打开的文件描述符(open FDs),经常被访问的文件的信息.
    # 适当设置下面这些值可以极大提高每秒的请求数.
    # 实际设置的值不一定跟下面的一样,请根据具体机器来调优.下面只是测试环境中的一个设置例子.
    open_file_cache max=200000 inactive=20s; 
    open_file_cache_valid 30s; 
    open_file_cache_min_uses 2;
    open_file_cache_errors on;
    
    # 缓冲日志写入可以加速I/O,或是有可能的话甚至可以禁止,看具体的生产环境要求.
    #access_log /var/log/nginx/access.log main buffer=16k;
    access_log off;
    
    # 使用sendfile从Linux内核中的一个文件描述符(FD)拷贝数据到另一个文件描述符比read() + write()更有效率,
    # 因为read() + write()的方式需要在用户空间(user space)来回传输数据
    sendfile on;
    
    # 使用tcp_nopush会使Nginx尝试使用一个数据包发送它的HTTP响应头(HTTP response head),而不是使用部分帧
    # (partial frames).无论是对调用sendfile之前追加头部(prepending headers)或是对是吞吐量优化来说,
    # 都是非常有用的.
    tcp_nopush on;
    
    # 不要缓冲数据发送(data-sends)(禁止Nagle算法).
    # 设置为on非常适合于实时频繁发送小数据.(比如图片,pdf,ppt文件之类不是小数据的,应该设置为off)
    tcp_nodelay on;
    
    # keep-alive连接的超时时间.服务器在这个超时时间之后会关闭这个连接.
    keepalive_timeout 30;
    
    # 可通过keep-alive连接的客户端请求数.下面的值仅是测试环境使用,具体设置请根据实际机器来调.
    keepalive_requests 100000;
    
    # 在客户端停止响应之后,允许服务器关闭连接,释放socket关联的内存
    reset_timedout_connection on;
    
    # 设置客户端读请求的超时时间,默认是60s
    client_body_timeout 10;
    
    # 设置客户端的响应超时时间.如果客户端停止读取数据,在这么多时间之后就释放过期的客户端连接,默认是60s
    send_timeout 2;
    
    # 压缩设置.减少网络传输数据量.
    gzip on;
    gzip_min_length 10240;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
    gzip_disable "MSIE [1-6]\.";
    

    这些nginx配置项所处的位置,请继续往下看.

  • Nginx配置例子

    下面的配置例子仅为说明上面提到的优化项在nginx.conf中的位置,具体的优化值请根据实际机器来调.

    # cat nginx.conf
    user www www;
    worker_processes 2;
    worker_cpu_affinity 0001 0010;
    worker_rlimit_nofile 100000; 
    pid logs/nginx.pid;
    error_log logs/error.log crit;
    
    events {
        # Maximum clients = worker_processes * worker_connections
        worker_connections 4096;
        multi_accept on;
        use epoll;
    }
    #google_perftools_profiles log/profile;
    
    http {
        # Basic Settings
        sendfile on;
        open_file_cache max=100000 inactive=20s;
        open_file_cache_valid 30s;
        open_file_cache_min_uses 2;
        open_file_cache_errors on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 20;
        #keepalive_requests 100000;
        reset_timedout_connection on;
    
        client_max_body_size 15m;
        client_body_timeout 60;
        client_header_timeout 60;
        client_body_buffer_size  128K;
        client_header_buffer_size 1k;
        large_client_header_buffers 4 32k;
        send_timeout 60;
        types_hash_max_size 2048;
        server_tokens off;
        
    
        include mime.types;
        default_type text/html;
        charset utf-8;    
    
        # Log Format
        log_format main '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "$http_x_forwarded_for"';
       
        # Gzip Settings
        gzip on;
        gzip_static on;
        gzip_disable "MSIE [1-6]\.";
        gzip_vary on;
        gzip_proxied any;
        # gzip_proxied expired no-cache no-store private auth;
        gzip_comp_level 2;
        gzip_min_length 5000;
        gzip_http_version 1.1;
        gzip_buffers 16 8k;
        gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml  application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml;
        ignore_invalid_headers on;
    
        #Virtual Host configs
        include conf.d/*;
        include sites-enabled/*.conf;
    }
    

相关阅读

标签:

评论已关闭!

Copyright © 理处言语然自 保留所有权利.   Theme  Ality 京ICP备07032740号

用户登录

分享到: