溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Ngnix中怎么利用hash表實(shí)現(xiàn)請(qǐng)求快速反應(yīng)

發(fā)布時(shí)間:2021-07-20 10:48:53 來源:億速云 閱讀:141 作者:Leah 欄目:web開發(fā)

本篇文章給大家分享的是有關(guān)Ngnix中怎么利用hash表實(shí)現(xiàn)請(qǐng)求快速反應(yīng),小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

考慮到保存鍵及其值的Ngnix hash表存儲(chǔ)單元的大小不至于超出設(shè)定參數(shù)(hash bucket size), 在啟動(dòng)和每次重新配置時(shí),Nginx為hash表選擇盡可能小的尺寸。

直到hash表超過參數(shù)(hash max size)的大小才重新進(jìn)行選擇. 對(duì)于大多數(shù)Ngnix hash表都有指令來修改這些參數(shù)。例如,保存服務(wù)器名字的hash表是由指令 server_names_hash_max_size 和 server_names_hash_bucket_size所控制的。參數(shù)hash bucket size總是等于hash表的大小,并且是一路處理器緩存大小的倍數(shù)。在減少了在內(nèi)存中的存取次數(shù)后,使在處理器中加速查找hash表鍵值成為可能。

如果hash bucket size等于一路處理器緩存的大小,那么在查找鍵的時(shí)候,最壞的情況下在內(nèi)存中查找的次數(shù)為2。***次是確定存儲(chǔ)單元的地址,第二次是在存儲(chǔ)單元中查找鍵值。因此,如果Nginx給出需要增大 hash max size 或 hash bucket size的提示,那么首要的是增大前一個(gè)參數(shù)的大小.

事件模型

Nginx支持如下處理連接的方法(I/O復(fù)用方法),這些方法可以通過use指令指定。

select - 標(biāo)準(zhǔn)方法。 如果當(dāng)前平臺(tái)沒有更有效的方法,它是編譯時(shí)默認(rèn)的方法。你可以使用配置參數(shù) --with-select_module 和 --without-select_module 來啟用或禁用這個(gè)模塊。

poll - 標(biāo)準(zhǔn)方法。 如果當(dāng)前平臺(tái)沒有更有效的方法,它是編譯時(shí)默認(rèn)的方法。你可以使用配置參數(shù) --with-poll_module 和 --without-poll_module 來啟用或禁用這個(gè)模塊。

kqueue - 高效的方法,使用于 FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X. 使用雙處理器的MacOS X系統(tǒng)使用kqueue可能會(huì)造成內(nèi)核崩潰。

epoll - 高效的方法,使用于Linux內(nèi)核2.6版本及以后的系統(tǒng)。在某些發(fā)行版本中,如SuSE 8.2, 有讓2.4版本的內(nèi)核支持epoll的補(bǔ)丁。

rtsig - 可執(zhí)行的實(shí)時(shí)信號(hào),使用于Linux內(nèi)核版本2.2.19以后的系統(tǒng)。默認(rèn)情況下整個(gè)系統(tǒng)中不能出現(xiàn)大于1024個(gè)POSIX實(shí)時(shí)(排隊(duì))信號(hào)。這種情況對(duì)于高負(fù)載的服務(wù)器來說是低效的;所以有必要通過調(diào)節(jié)內(nèi)核參數(shù) /proc/sys/kernel/rtsig-max 來增加隊(duì)列的大小。

Ngnix hash表可是從Linux內(nèi)核版本2.6.6-mm2開始, 這個(gè)參數(shù)就不再使用了,并且對(duì)于每個(gè)進(jìn)程有一個(gè)獨(dú)立的信號(hào)隊(duì)列,這個(gè)隊(duì)列的大小可以用 RLIMIT_SIGPENDING 參數(shù)調(diào)節(jié)。當(dāng)這個(gè)隊(duì)列過于擁塞,nginx就放棄它并且開始使用 poll 方法來處理連接直到恢復(fù)正常。

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

eventport - 高效的方法,使用于 Solaris 10. 為了防止出現(xiàn)內(nèi)核崩潰的問題, 有必要安裝 這個(gè) 安全補(bǔ)丁。

以上就是Ngnix中怎么利用hash表實(shí)現(xiàn)請(qǐng)求快速反應(yīng),小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI