LNMP下web高併發優化配置

LNMP下web高併發優化配置

一、nginx 配置(nginx.cnf)
1.  worker_processes 8;
    nginx 進程數,建議按照cpu 數目來指定,一般爲它的倍數 (如,2個四核的cpu計爲8)。

2.  worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
    爲每個進程分配cpu,上例中將8 個進程分配到8 個cpu,當然可以寫多個,或者將一個進程分配到多個cpu

3.  worker_rlimit_nofile 65535;
    這個指令是指當一個nginx 進程打開的最多文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與nginx 進程數相除,但是nginx 分配請求並不
    是那麼均勻,所以最好與ulimit -n 的值保持一致。

現在在linux 2.6內核下開啓文件打開數爲65535,worker_rlimit_nofile就相應應該填寫65535。

4.  use epoll;
    epoll是多路複用IO(I/O Multiplexing)中的一種方式,僅用於linux2.6以上內核,可以大大提高nginx的性能

5.  worker_connections 65535;
    每個進程允許的最多連接數, 理論上每臺nginx 服務器的最大連接數爲worker_processes*worker_connections。

6.  keepalive_timeout 60;
    keepalive 超時時間。

7.  client_header_buffer_size 4k;
    客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求頭的大小不會超過1k,不過由於一般系統分頁都要大於1k,所以這裏
     設置爲分頁大小。

8.  open_file_cache max=65535 inactive=60s;
    這個將爲打開文件指定緩存,默認是沒有啓用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時間文件沒被請求後刪除緩存。

9.  open_file_cache_valid 80s;
    這個是指多長時間檢查一次緩存的有效信息。

10.  open_file_cache_min_uses 1;
    open_file_cache 指令中的inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打開的,如上例,如果有一個
      文件在inactive 時間內一次沒被使用,它將被移除。

11.其他,例如:
    include mime.types;pm string
設置進程管理器如何管理子進程. 可用值: static, dynamic. 必須設置.
static – 子進程的數量是固定的 (pm.max_children).
dynamic – 子進程的數量在下面配置的基礎上動態設置: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.
pm.max_children int
子進程的數量,pm 設置爲 static 時表示創建的, pm 設置爲 dynamic 時表示最大可創建的. 必須設置.
該選項設置可以同時提供服務的請求數限制. 類似 Apache 的 mpm_prefork 中 MaxClients 的設置和 普通
PHP FastCGI中的 PHP_FCGI_CHILDREN 環境變量.
pm.start_servers in
設置啓動時創建的子進程數目. 僅在 pm 設置爲 dynamic 時使用. 默認值: min_spare_servers + (max_spare_servers – min_spare_servers) / 2.
pm.min_spare_servers int
設置空閒服務進程的最低數目. 僅在 pm 設置爲 dynamic 時使用. 必須設置.
pm.max_spare_servers int
設置空閒服務進程的最大數目. 僅在 pm 設置爲 dynamic 時使用. 必須設置.
pm.max_requests int
設置每個子進程重生之前服務的請求數. 對於可能存在內存泄漏的第三方模塊來說是非常有用的. 如果設置爲 '0′ 則一直接受請求. 等同於 PHP_FCGI_MAX_REQUESTS 環境變量. 默認值: 0.
    default_type application/octet-stream;
    charset utf-8;
    server_names_hash_bucket_size 128;
    client_header_buffer_size 2k;
    large_client_header_buffers 4 4k;
    client_max_body_size 8m;
    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 4k;
    fastcgi_buffers 8 4k;
    fastcgi_busy_buffers_size 8k;
    fastcgi_temp_file_write_size 8k;
    fastcgi_cache TEST;
    fastcgi_cache_valid 200 302 1h;
    fastcgi_cache_valid 301 1d;
    fastcgi_cache_valid any 1m;
    fastcgi_cache_min_uses 1;
    fastcgi_cache_use_stale error timeout invalid_header http_500;
    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;




二、php 配置(php-fpm.cnf)
1.pm string
    設置進程管理器如何管理子進程. 可用值: static, dynamic. 必須設置.
        static – 子進程的數量是固定的 (pm.max_children).
        dynamic – 子進程的數量在下面配置的基礎上動態設置: pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers.

2.pm.max_children int
    子進程的數量,pm 設置爲 static 時表示創建的, pm 設置爲 dynamic 時表示最大可創建的. 必須設置.
    4G內存一般可以設置爲200

3.pm.start_servers in
    設置啓動時創建的子進程數目. 僅在 pm 設置爲 dynamic 時使用. 默認值: min_spare_servers + (max_spare_servers – min_spare_servers) / 2.

4.pm.min_spare_servers int
    設置空閒服務進程的最低數目. 僅在 pm 設置爲 dynamic 時使用. 必須設置.

5.pm.max_spare_servers int
    設置空閒服務進程的最大數目. 僅在 pm 設置爲 dynamic 時使用. 必須設置.

6.pm.max_requests int
    設置每個子進程重生之前服務的請求數. 對於可能存在內存泄漏的第三方模塊來說是非常有用的. 如果設置爲 '0′ 則一直接受請求.
     等同於 PHP_FCGI_MAX_REQUESTS 環境變量. 默認值: 0.




三、mysql配置(my.cnf)

1.mysqld
    max_connections = 1024
    skip-name-resolve
    wait_timeout = 10
    interactive_timeout = 120
    max_connect_errors = 100

2.不用長連接,程序查詢完畢後close

3.主從同步
     change master to master_host='192.168.1.199', master_user='apk_service', master_password='123456', master_log_file='mysql-bin.000042', master_log_pos=366;  




四、memcached配置
-l 指定監聽的地址

-p 指定監聽的TCP端口號,默認是11211

-t 指定線程數,默認是4個

-c 最大同時連接數,默認是1024.

-U 指定監聽的UDP端口號,默認是11211
發佈了33 篇原創文章 · 獲贊 9 · 訪問量 38萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章