系統優化
$ cat /etc/sysctl.confnet.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog = 36768
net.core.somaxconn = 36768
net.core.wmem_default = 8588608
net.core.rmem_default = 8588608
net.core.rmem_max = 16877216
net.core.wmem_max = 16877216
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000
915000000
927000000
net.ipv4.tcp_max_orphans = 3376800
net.ipv4.ip_local_port_range = 1024
65535
$ sysctl -p
$ cat /etc/security/limit.conf
* hard nofile 65535
* soft nofile 65535
nginx配置 優化
#js和css快取時間
location ~* \.(js|css)$
error_page
500502
503504 /50x.html;
location /
location @rewrites
location = /robots.txt
location ~\.php$
}include conf.d/*;
}
events
use epoll:nginx採用epoll事件模型,處理效率高
work_connections:是單個worker程序允許客戶端最大連線數,這個數值一般根據伺服器效能和記憶體來制定,實際最大值就是worker程序數乘以work_connections,實際我們填入乙個65535,足夠了,這些都算併發值,乙個**的併發達到這麼大的數量,也算乙個大站了!
multi_accept:告訴nginx收到乙個新連線通知後接受盡可能多的連線,預設是on,設定為on後,多個worker按序列方式來處理連線,也就是乙個連線只有乙個worker被喚醒,其他的處於休眠狀態,設定為off後,多個worker按並行方式來處理連線,也就是乙個連線會喚醒所有的worker,直到連線分配完畢,沒有取得連線的繼續休眠。當你的伺服器連線數不多時,開啟這個引數會讓負載有一定的降低,但是當伺服器的吞吐量很大時,為了效率,可以關閉這個引數。
高效傳輸模式,如:
include mime.types: **型別,include 只是乙個在當前檔案中包含另乙個檔案內容的指令
tcp_nopush:必須在sendfile開啟模式才有效,防止網路阻塞,積極的減少網路報文段的數量(將響應頭和正文的開始部分一起傳送,而不乙個接乙個的傳送。)
主要目的是保護伺服器資源,cpu,記憶體,控制連線數,因為建立連線也是需要消耗資源的,如:
keepalive_timeout 60;keepalive_requests
10240
;tcp_nodelay on;
client_header_buffer_size 4k;
open_file_cache max=102400 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 1;
client_header_timeout 15;
client_body_timeout 15;
reset_timedout_connection on;
send_timeout 15;
server_tokens off;
client_max_body_size 10m;
keepalived_timeout 60:客戶端連線保持會話超時時間,超過這個時間,伺服器斷開這個鏈結
keepalive_requests 10240:引數限制了乙個 http 長連線最多可以處理完成的最大請求數, 預設是 100。當連線處理完成的請求數達到最大請求數後,將關閉連線。
tcp_nodelay:也是防止網路阻塞,不過要包涵在keepalived引數才有效
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 時間內一次沒被使用,它將被移除。
client_header_timeout:設定請求頭的超時時間。我們也可以把這個設定低些,如果超過這個時間沒有傳送任何資料,nginx將返回request time out的錯誤
client_body_timeout:設定請求體的超時時間。我們也可以把這個設定低些,超過這個時間沒有傳送任何資料,和上面一樣的錯誤提示
reset_timeout_connection:告訴nginx關閉不響應的客戶端連線。這將會釋放那個客戶端所占有的記憶體空間。
send_timeout:響應客戶端超時時間,這個超時時間僅限於兩個活動之間的時間,如果超過這個時間,客戶端沒有任何活動,nginx關閉連線
server_tokens:並不會讓nginx執行的速度更快,但它可以關閉在錯誤頁面中的nginx版本數字,這樣對於安全性是有好處的。
client_max_body_size:上傳檔案大小限制
docker學習系列5 nginx 容器
本節通過學習 docker 的 nginx 映象,容器的使用。以及如何對映檔案。執行容器 docker run name my nginx d p 8088 80 rm nginx 1.15 d 在後台執行 p 容器的80埠對映到 宿主機的 8088 rm 容器停止執行後,自動刪除容器檔案 name...
docker學習系列5 nginx 容器
本節通過學習 docker 的 nginx 映象,容器的使用。以及如何對映檔案。執行容器 docker run name my nginx d p 8088 80 rm nginx 1.15 d 在後台執行 p 容器的80埠對映到 宿主機的 8088 rm 容器停止執行後,自動刪除容器檔案 name...
5 nginx日誌切割和刪除
5 nginx日誌切割和日誌定期刪除 logdir data logs nginx 日誌存放目錄 logdate date y m d 日誌名稱字尾 keeplogdays 30 保留的天數 看自己的需求 deldate date d days y m d 當前時間的前三十天時間戳 是乙個具體的日期...