Nginx性能優化

隨着訪問量的不斷增長,須要對 Nginx 和內核作相應的優化來知足高併發用戶的訪問, 那下面在單臺 Nginx 服務器來優化相關參數。
1)Nginx.conf 配置優化linux

wokrer_processes 8;nginx

nginx 進程數,建議按照cpu數目來指定,通常爲它的倍數。緩存

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;服務器

爲每一個進程分配cpu,上例中將8個進 程分配到8個cpu,固然能夠寫多個,或者將多個進程分配到多個cpu.cookie

worker_rlimit_nofile 102400;併發

這個指令是指當一個nginx進程打開最大文件描述符數目,理論值應該是最多打開文件數(ulimit -n)與nginx進程數相除,可是nginx分配請求並非那麼均勻,因此最好與ulimit -n保持一致。socket

use epoll;使用 epoll 的 I/O 模型。epoll 是 Linux 內核爲處理大批量文件描述符而做了改進的poll,它能顯著提升程序在大量併發鏈接中只有少許活躍的狀況下的系統 CPU 利用率。tcp

worker_connections 102400;高併發

每一個進程容許的最多鏈接數,理論上每臺nginx服務器的最大鏈接數優化

worker_processes*worker_connections

keepalive _timeout 60;

keepalived 超時時間,客戶端到服務器端的鏈接持續有效時間,當出現對服務器的後續請求,keepalive_timeout功能可避免創建或從新創建鏈接。

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 參數時間內文件的最少使用次數,若是超過這個數字,文件描述符一直是在緩存中打開的。

2)linux內核參數優化:

net.ipv4.tcp_max_tw_buckets = 10000timewait 的數量,默認是 180000。net.ipv4.ip_local_port_range = 1024 65000容許系統打開的端口範圍。net.ipv4.tcp_tw_recycle = 1啓用 timewait 快速回收。net.ipv4.tcp_tw_reuse = 1開啓重用。容許將 TIME-WAIT sockets 從新用於新的 TCP 鏈接。net.ipv4.tcp_syncookies = 1開啓 SYN Cookies,當出現 SYN 等待隊列溢出時,啓用 cookies 來處理。

相關文章
相關標籤/搜索