【整理】Nginx 战斗准备 —— 优化指南
生活随笔
收集整理的這篇文章主要介紹了
【整理】Nginx 战斗准备 —— 优化指南
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
本文內(nèi)容參考自《 Nginx 戰(zhàn)斗準(zhǔn)備 —— 優(yōu)化指南 》。
【一句話總結(jié)】
本文不是一個(gè)全面的微調(diào)指南,而是讓你了解哪些設(shè)置能夠讓你在大量客戶端訪問時(shí)擁有良好的性能,為什么它們會(huì)提高性能。
【知識(shí)點(diǎn)】
- worker_processes 定義了 nginx 對外提供 web 服務(wù)時(shí)的 worder 進(jìn)程數(shù)。
- worker_rlimit_nofile 更改 worker 進(jìn)程的最大打開文件數(shù)限制。
- events 模塊中包含 nginx 中所有和處理連接相關(guān)的設(shè)置。
- worker_connections 的值和 worker_rlimit_nofile 值有關(guān)系,該值的大小同時(shí)受限于系統(tǒng)可以使用的端口數(shù)目(~64k)。
- multi_accept 告訴 nginx 在收到關(guān)于新連接的可讀通知后,應(yīng)盡可能處理掉當(dāng)前存在的所有來自客戶端的連接。
- use 設(shè)置用于采用哪種 I/O 復(fù)用方式。
- http 模塊控制著 nginx http 處理的所有核心特性。
- server_tokens 并不會(huì)讓 nginx 執(zhí)行的速度更快,但它可以關(guān)閉在錯(cuò)誤頁面中的 nginx 版本數(shù)字,這樣對于安全性是有好處的。
- sendfile 使能 sendfile() 的使用,在內(nèi)核態(tài)完成相關(guān)動(dòng)作,更高效。
- tcp_nopush 告訴 nginx 在一個(gè)數(shù)據(jù)包里發(fā)送所有 HTTP 包頭,而不是通過 TCP 的 PSH 方式一個(gè)一個(gè)發(fā)送。
- tcp_nodelay 告訴 nginx 不要在發(fā)送小塊數(shù)據(jù)的時(shí)候進(jìn)行緩存,而是將短小的數(shù)據(jù)片段即時(shí)發(fā)送出去。這個(gè)選項(xiàng)用于要求頻繁發(fā)送小數(shù)據(jù)片段,而不需要獲得即時(shí)回應(yīng)的應(yīng)用,因?yàn)閷@種應(yīng)用來說,即時(shí)投遞的能力才是必須的。
- access_log 設(shè)置 nginx 是否將存儲(chǔ)訪問日志。關(guān)閉這個(gè)選項(xiàng)可以讓讀取磁盤 I/O 操作更快(這個(gè)不太好關(guān)閉吧)。
- error_log 告訴 nginx 只能記錄嚴(yán)重的錯(cuò)誤。
- keepalive_timeout 給客戶端分配 keep-alive 鏈接超時(shí)時(shí)間。服務(wù)器將在這個(gè)超時(shí)時(shí)間過后關(guān)閉鏈接。我們將它設(shè)置低些可以讓 ngnix 持續(xù)工作的時(shí)間更長。
- client_header_timeout 和 client_body_timeout 設(shè)置在一定時(shí)間內(nèi)沒有收到來自客戶端的請求的 header 或 body 部分則認(rèn)為超時(shí)。
- reset_timeout_connection 告訴 nginx 在發(fā)生連接超時(shí)后,通過向客戶端發(fā)送 RST 直接重置不響應(yīng)的客戶端連接。這將會(huì)釋放那個(gè)客戶端所占有的內(nèi)存空間(使用 RST 方式重置可能會(huì)有副作用)。
- send_timeout 指定 nginx 發(fā)送響應(yīng)的超時(shí)時(shí)間,即 nginx 向客戶端發(fā)送了數(shù)據(jù)包,但客戶端一致沒有處理該數(shù)據(jù)包的情況。該超時(shí)時(shí)間不是指一個(gè)應(yīng)答被完整傳輸?shù)臅r(shí)間,而是用于約束兩次連續(xù)的客戶端側(cè)讀操作的時(shí)間間隔。
- limit_conn_zone 用于設(shè)置共享內(nèi)存區(qū)相關(guān)信息。共享內(nèi)存區(qū)中可以保存各種 key 的狀態(tài)信息(例如當(dāng)前連接數(shù)據(jù))。用法:limit_conn_zone $binary_remote_addr zone=addr:5m;
- limit_conn 設(shè)置與指定 key 值關(guān)聯(lián)的連接數(shù)的最大值。用法:limit_conn addr 100; 表示每個(gè) ip 地址上僅允許 100 個(gè)并發(fā)連接。
- include 只是一個(gè)在當(dāng)前文件中包含另一個(gè)文件內(nèi)容的指令。可以使用通配符 * 。
- default_type 設(shè)置文件使用的默認(rèn)的 MIME-type 。
- charset 設(shè)置在 header 中攜帶的默認(rèn)字符集。
- gzip 設(shè)置 nginx 對發(fā)送的數(shù)據(jù)進(jìn)行 gzip 壓縮。
- gzip_disable 用于設(shè)置針對特定的客戶端不使用 gzip 壓縮。例如 gzip_disable "msie6"; 表示針對 IE6 不做 gzip 。
- gzip_static 告訴 nginx 在對資源進(jìn)行 gzip 壓縮前,通過名字查找是否已有預(yù)壓縮過的資源。這就允許你可以采用高壓縮比算法事先進(jìn)行壓縮,而不用在請求時(shí)才執(zhí)行 gzip 壓縮。
- gzip_proxied allows or disallows compression of a response based on the request/response. We’ll set it to any, so we gzip all requests.
- gzip_min_length 設(shè)置進(jìn)行 gzip 壓縮時(shí)數(shù)據(jù)大小的字節(jié)數(shù)下限。例如 gzip_min_length 1000; 表示當(dāng)請求的大小低于 1000 字節(jié),將不采用 gzip 進(jìn)行壓縮,因?yàn)楫吘?gzip 壓縮會(huì)拖慢請求處理進(jìn)程。
- gzip_comp_level 設(shè)置 gzip 壓縮級(jí)別。級(jí)別范圍 1~9,其中 9 是最高壓縮級(jí)別,但也是最慢的。一般設(shè)置中間值 4 比較好。
- gzip_type 設(shè)置針對那些數(shù)據(jù)類型進(jìn)行 gzip 壓縮的。例如
- gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
- open_file_cache 啟用文件緩存,同時(shí)可以指定在該緩存中可以存儲(chǔ)的元素的最大個(gè)數(shù),以及淘汰時(shí)間。
- open_file_cache_valid 設(shè)置檢驗(yàn)緩存中元素有效性的頻率。
- open_file_cache_min_uses 與 open_file_cache 中的 inactive 參數(shù)配合使用。如果在 inactive 指定時(shí)間內(nèi),訪問次數(shù)超過 open_file_cache_min_uses 指定的值,則不會(huì)淘汰出緩存。
- open_file_cache_errors 設(shè)置是否緩存打開、查找文件錯(cuò)誤的信息。
user www-data; pid /var/run/nginx.pid; worker_processes auto; worker_rlimit_nofile 100000;events {worker_connections 2048;multi_accept on;use epoll; }http {server_tokens off;sendfile on;tcp_nopush on;tcp_nodelay on;access_log off;error_log /var/log/nginx/error.log crit;keepalive_timeout 10;client_header_timeout 10;client_body_timeout 10;reset_timedout_connection on;send_timeout 10;limit_conn_zone $binary_remote_addr zone=addr:5m;limit_conn addr 100;include /etc/nginx/mime.types;default_type text/html;charset UTF-8;gzip on;gzip_disable "msie6";gzip_proxied any;gzip_min_length 1000;gzip_comp_level 6;gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;open_file_cache max=100000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2;open_file_cache_errors on;include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*; }
轉(zhuǎn)載于:https://my.oschina.net/moooofly/blog/228765
總結(jié)
以上是生活随笔為你收集整理的【整理】Nginx 战斗准备 —— 优化指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#实现Windows后台服务实例浅析
- 下一篇: win7下设置无线上网