nginx 配置優化的幾個引數

2021-06-05 10:28:40 字數 4784 閱讀 8740

2011-04-22

最近在伺服器上搞了一些nginx  研究了一下 總結總結

worker_processes 8

nginx要開啟的程序數一般等於cpu的總核數 其實一般情況下開4個或8個就可 我開2個

以了 多了沒有太多用

每個nginx程序消耗的記憶體10兆的模樣

worker_cpu_affinity

僅適用於linux,使用該選項可以繫結worker程序和cpu(2.4核心的機器用不

了)假如是8 cpu 分配如下:

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000

00100000 01000000 10000000

nginx可以使用多個worker程序,原因如下:

to use smp

to decrease latency when workers blockend on disk i/o

to limit number of connections per process when select()/poll() is

used

the worker_processes and worker_connections from the event sections

allows you to calculate maxclients value: k

max_clients = worker_processes * worker_connections

worker_rlimit_nofile 102400;

每個nginx程序開啟檔案描述符最大數目 配置要和系統的單程序開啟檔案數一

致,linux 2.6核心下開啟檔案開啟數為65535,worker_rlimit_nofile就相應

應該填寫65535 

nginx排程時分配請求到程序並不是那麼的均衡,假如超過會返回502錯誤。我

這裡寫的大一點

use epoll

nginx使用了最新的epoll(linux 2.6核心)和kqueue(freebsd)網路i/o模

型,而apache則使用的是傳統的select模型。

處理大量的連線的讀寫,apache所採用的select網路i/o模型非常低效。

在高併發伺服器中,輪詢i/o是最耗時間的操作 目前linux下能夠承受高併發

訪問的squid、memcached都採用的是epoll網路i/o模型。

worker_connections 65535;

每個工作程序允許最大的同時連線數  (maxclient = work_processes * worker_connections)

keepalive_timeout 75

keepalive超時時間

這裡需要注意官方的一句話:

the parameters can differ from each other. line keep-alive:

timeout=time understands mozilla and konqueror. msie itself shuts

client_header_buffer_size 16k

large_client_header_buffers 4 32k

客戶請求頭緩衝大小

nginx缺省會用client_header_buffer_size這個buffer來讀取header值,如果

header過大,它會使用large_client_header_buffers來讀取

如果設定過小http頭/cookie過大 會報400 錯誤 nginx 400 bad request

求行如果超過buffer,就會報http 414錯誤(uri too long)

nginx接受最長的http頭部大小必須比其中乙個buffer大,否則就會報400的

http錯誤(bad request)。

open_file_cache max 102400

使用字段:http, server, location 這個指令指定快取是否啟用,如果啟用,將記錄檔案以下資訊: ·開啟的檔案描述符,大小資訊和修改時間. ·存在的目錄資訊. ·在搜尋檔案過程中的錯誤資訊 -- 沒有這個檔案,無法正確讀取,參考open_file_cache_errors 指令選項:

·max - 指定快取的最大數目,如果快取溢位,最長使用過的檔案(lru)將被移除

例: open_file_cache max=1000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on;

open_file_cache_errors

語法:open_file_cache_errors on | off 預設值:open_file_cache_errors off 使用字段:http, server, location 這個指令指定是否在搜尋乙個檔案是記錄cache錯誤.

open_file_cache_min_uses

語法:open_file_cache_min_uses number 預設值:open_file_cache_min_uses 1 使用字段:http, server, location 這個指令指定了在open_file_cache指令無效的引數中一定的時間範圍內可以使用的最小檔案數,如 果使用更大的值,檔案描述符在cache中總是開啟狀態.

open_file_cache_valid

語法:open_file_cache_valid time 預設值:open_file_cache_valid 60 使用字段:http, server, location 這個指令指定了何時需要檢查open_file_cache中快取專案的有效資訊.

開啟gzip快取靜態檔案:

優化linux核心引數

vi /etc/sysctl.conf

# add

net.ipv4.tcp_max_syn_backlog = 65536

net.core.netdev_max_backlog =  32768

net.core.somaxconn = 32768

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries = 2

net.ipv4.tcp_tw_recycle = 1

#net.ipv4.tcp_tw_len = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_max_orphans = 3276800

#net.ipv4.tcp_fin_timeout = 30

#net.ipv4.tcp_keepalive_time = 120

net.ipv4.ip_local_port_range = 1024  65535

附錄:一些錯誤排查

php-cgi程序數不夠用、php執行時間長(mysql慢)、或者是php-cgi程序死掉

,都會出現502錯誤

一般來說nginx 502 bad gateway和php-fpm.conf的設定有關,而nginx 504 gateway time-out則是與nginx.conf的設定有關

1、檢視當前的php fastcgi程序數是否夠用:

netstat -anpo | grep "php-cgi" | wc -l

如果實際使用的「fastcgi程序數」接近預設的「fastcgi程序數」,那麼

,說明「fastcgi程序數」不夠用,需要增大。

2、部分php程式的執行時間超過了nginx的等待時間,可以適當增加

nginx.conf配置檔案中fastcgi的timeout時間,例如:

增大client_max_body_size

client_max_body_size:指令指定允許客戶端連線的最大請求實體大小,它出現在請求頭部的content-length欄位. 如果請求大於指定的值,客戶端將收到乙個"request entity too large" (413)錯誤. 記住,瀏覽器並不知道怎樣顯示這個錯誤.

php.ini中增大

post_max_size 和upload_max_filesize

nginx 配置引數優化

nginx作為高效能web伺服器,即使不特意調整配置引數也可以處理大量的併發請求。以下的配置引數是借鑑網上的一些調優引數,僅作為參考,不見得適於你的線上業務。worker程序 該引數表示啟動幾個工作程序,建議和本機cpu核數保持一致,每一核cpu處理乙個程序。它表示nginx最大可用的檔案描述符個數...

nginx配置引數優化

ginx作為高效能web伺服器,即使不特意調整配置引數也可以處理大量的併發請求。以下的配置引數是借鑑網上的一些調優引數,僅作為參考,不見得適於你的線上業務。worker程序 該引數表示啟動幾個工作程序,建議和本機cpu核數保持一致,每一核cpu處理乙個程序。它表示nginx最大可用的檔案描述符個數,...

Nginx配置引數優化, Nginx運維規範

worker程序 http和tcp連線假如需要頻繁的傳送一些小包資料,比如說1個位元組,以ipv4為例的話,則每個包都要附帶40位元組的頭,也就是說,總計41個位元組的資料裡,其中只有1個位元組是我們需要的資料。為了解決這個問題,出現了nagle演算法。它規定 如果包的大小滿足mss,那麼可以立即傳...