• Nginx性能调优


    【调优】Nginx性能调优

     

    一.Nginx优化配置

    1.主配置文件优化:
    # vi /usr/local/nginx/conf/nginx.conf
    -----------------------------------------
    user www www;

    worker_processes 8;
    worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;


    error_log /usr/local/nginx/logs/nginx_error.log crit;


    pid /usr/local/nginx/logs/nginx.pid;


    worker_rlimit_nofile 204800;


    events
    {
    use epoll;
    worker_connections 204800;
    }


    http {
    include mime.types;
    default_type application/octet-stream;


    log_format main 'remoteaddrremoteaddr−remote_user [timelocal]"timelocal]"request" '
    'statusstatusbody_bytes_sent "httpreferer"′′"httpreferer"″"http_user_agent" "$http_x_forwarded_for"';


    access_log logs/access.log main;


    charset utf-8;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 20m;


    sendfile on;
    tcp_nopush on;


    keepalive_timeout 60;


    fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2
    keys_zone=TEST:10m
    inactive=5m;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;


    open_file_cache max=204800 inactive=20s;
    open_file_cache_min_uses 1;
    open_file_cache_valid 30s;


    tcp_nodelay on;


    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml;
    gzip_vary on;
    }
    -----------------------------------------

    注:部分配置详解:
    worker_processes 8;
    nginx进程数,建议按照cpu数目来指定,一般为它的倍数。

    worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
    为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。


    worker_rlimit_nofile 204800;
    这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。
    注:这里需要设置 ulimit -SHn 204800

    use epoll;
    使用epoll的I/O模型,这个不用说了吧。

    worker_connections 204800;
    每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections。

    keepalive_timeout 60;
    keepalive超时时间。

    client_header_buffer_size 4k;
    客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。

    open_file_cache max=102400 inactive=20s;
    这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。

    open_file_cache_valid 30s;
    这个是指多长时间检查一次缓存的有效信息。

    open_file_cache_min_uses 1;
    open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。

  • 相关阅读:
    ddd
    对Map按key和value分别排序
    两端通信
    WinDBG调试.NET程序示例
    FAQ:仓储实现为什么在基础设施层?
    Please Send Me a Card
    Web API 入门指南
    Node.js
    聊天工具mychat
    C语言面试问答5
  • 原文地址:https://www.cnblogs.com/donghui521/p/10109553.html
Copyright © 2020-2023  润新知