首頁  >  文章  >  運維  >  nginx如何最佳化

nginx如何最佳化

(*-*)浩
(*-*)浩原創
2019-12-17 14:44:123707瀏覽

nginx如何最佳化

Ngnix使用hash表來協助完成請求的快速處理。

考慮到保存鍵及其值的hash表儲存單元的大小不至於超出設定參數(hash bucket size), 在啟動和每次重新配置時,Nginx為hash表格選擇盡可能小的尺寸。                       ( 建議學習:nginx使用 )

#直到hash表超過參數(hash max size)的大小才重新進行選擇指令. 對於這些資料表超過參數(hash max size)的大小才重新進行選擇指令。參數。例如,保存伺服器名字的hash表是由指令

server_names_hash_max_size

server_names_hash_bucket_size

所控制的。參數hash bucket size總是等於hash表的大小,並且是一路處理器快取大小的倍數。在減少了在記憶體中的訪問次數後,使在處理器中加速查找hash表鍵值成為可能。

如果hash bucket size等於一路處理器快取的大小,那麼在查找鍵的時候,最壞的情況下在記憶體中查找的次數為2。第一次是確定儲存單元的位址,第二次是在儲存單元中尋找鍵值。

因此,如果Nginx給出需要增大hash max size 或hash bucket size的提示,那麼首要的是增大前一個參數的大小.

##事件模型

Nginx支援以下處理連線的方法(I/O重複使用方法),這些方法可以透過

use

指令指定。

select - 標準方法。如果目前平台沒有更有效的方法,它是編譯時預設的方法。你可以使用設定參數

--with-select_module

--without-select_module

來啟用或停用這個模組。

poll - 標準方法。如果目前平台沒有更有效的方法,它是編譯時預設的方法。你可以使用設定參數

--with-poll_module

--without-poll_module

來啟用或停用這個模組。

kqueue - 高效率的方法,使用於 FreeBSD 4.1 , OpenBSD 2.9 , NetBSD 2.0 和 MacOS X. 使用雙處理器的MacOS X系統使用kqueue可能會造成核心崩潰。

epoll - 高效率的方法,使用於Linux核心2.6版本及以後的系統。在某些發行版本中,如SuSE 8.2, 有讓2.4版本的核心支援epoll的補丁。

rtsig - 可執行的即時訊號,使用於Linux核心版本2.2.19以後的系統。預設整個系統中不能出現大於1024個POSIX即時(排隊)訊號。這種情況對於高負載的伺服器來說是低效的;所以有必要透過調節核心參數

/proc/sys/kernel/rtsig-max

來增加佇列的大小。但從Linux核心版本2.6.6-mm2開始, 這個參數就不再使用了,而且對於每個行程有一個獨立的訊號佇列,這個佇列的大小可以用 RLIMIT_SIGPENDING 參數調整。當這個佇列過於擁塞,nginx就放棄它並且開始使用

poll

#方法來處理連線直到恢復正常。

/dev/poll - 高效率的方法,使用於Solaris 7 11/99 , HP/UX 11.22 (eventport), IRIX 6.5.15 和Tru64 UNIX 5.1A .

eventport - 高效的方法,使用於Solaris 10. 為了防止核心崩潰的問題, 有必要安裝這個安全補丁。

以上是nginx如何最佳化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn