5 Nginx 效能優化

2022-06-16 21:54:12 字數 3959 閱讀 6694

系統優化

$ cat /etc/sysctl.conf

net.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 當前時間的前三十天時間戳 是乙個具體的日期...