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中文網其他相關文章!