国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

性能優(yōu)化之event擴(kuò)展疑問(wèn)

Jonas

最近在了解webman關(guān)于優(yōu)化Linux內(nèi)核的內(nèi)容,里面提到了在這個(gè)優(yōu)化基礎(chǔ)之前,需要開(kāi)啟event擴(kuò)展。此前有了解到IO多路復(fù)用里面的幾種模式,于是想通過(guò)實(shí)際的測(cè)試,來(lái)看下開(kāi)啟event擴(kuò)展之后實(shí)際的提升有多大。

一 環(huán)境準(zhǔn)備

在起初,直接本地搭建環(huán)境。通過(guò)相同的鏡像(這里借助了tinywan/docker-php-webman的鏡像)構(gòu)建了兩個(gè)容器,兩個(gè)容器都設(shè)置了linux內(nèi)核優(yōu)化的相關(guān)參數(shù)。然后一個(gè)開(kāi)啟event擴(kuò)展一個(gè)未開(kāi)啟,然后通過(guò)宿主機(jī)去壓測(cè),兩邊壓測(cè)結(jié)果都沒(méi)啥區(qū)別,于是想到有可能是因?yàn)樗拗鳈C(jī)自身的并發(fā)數(shù)限制,于是決定直接在阿里云上搞。

1.1 機(jī)器配置

受壓端與施壓端保證同一個(gè)可用區(qū),通過(guò)內(nèi)網(wǎng)壓測(cè),機(jī)型選擇的是通用算力型,避免用共享型機(jī)器,系統(tǒng)均是Debian
受壓端:2核(vCPU) 2 GiB
施壓端:8核(vCPU) 8 GiB

1.2 環(huán)境配置-受壓端

安裝PHP8.0,搭建webman,設(shè)置linux 內(nèi)核,其中l(wèi)inux設(shè)置內(nèi)核生效的有以下幾項(xiàng)
截圖

設(shè)置打開(kāi)文件數(shù)
截圖

關(guān)閉event擴(kuò)展
截圖

開(kāi)啟event擴(kuò)展
截圖

壓測(cè)接口
官方自帶示例接口/index/json
截圖

1.3 環(huán)境配置-施壓端

設(shè)置linux內(nèi)核
截圖

設(shè)置文件打開(kāi)數(shù)
截圖

安裝 Apache的ab工具

二 壓測(cè)

2.1 未開(kāi)啟event擴(kuò)展

壓測(cè)命令
ab -n 2000000 -c 5000 -k http://172.18.155.51:8787/index/json

受壓端CPU狀態(tài)
截圖
截圖

施壓端CPU狀態(tài)
截圖

壓測(cè)失敗
截圖
壓測(cè)結(jié)束,這里受壓端還一直持有connection,估計(jì)是因?yàn)閴簻y(cè)端的異常斷開(kāi)
截圖

縮小并發(fā)數(shù)
ab -n 2000000 -c 1500 -k -r http://172.18.155.51:8787/index/json

QPS壓測(cè)結(jié)果:
67065.64
66931.87
66882.92
截圖

2.2 開(kāi)啟event擴(kuò)展

壓測(cè)命令
ab -n 2000000 -c 1500 -k http://172.18.155.51:8787/index/json

受壓端CPU狀態(tài)
截圖

施壓端CPU狀態(tài)
截圖

3次QPS壓測(cè)結(jié)果:
66183.54
64454.47
66645.59
截圖

增高并發(fā)數(shù)
ab -n 2000000 -c 5000 -k -r http://172.18.155.51:8787/index/json
受壓端
截圖

壓測(cè)結(jié)果
截圖

三 結(jié)果

受壓端保持兩個(gè)worker

3.1 并發(fā)數(shù)1500

不開(kāi)啟event與開(kāi)啟event表現(xiàn)基本一致

場(chǎng)景 壓測(cè)一 壓測(cè)二 壓測(cè)三
不開(kāi)啟event 67065 66931 66882
開(kāi)啟event 66183 64454 66645

3.2 并發(fā)數(shù)5000

不開(kāi)啟event,施壓端出現(xiàn)報(bào)錯(cuò)
apr_pollset_poll: The timeout specified has expired

開(kāi)啟event,壓測(cè)正常

四 疑問(wèn)

并發(fā)數(shù)超5000,開(kāi)啟event能正常受理,這個(gè)能夠理解。
但是按照兩種多路復(fù)用的模型,epoll的方式在性能上不應(yīng)該比select上更加出色嗎,為啥兩者在并發(fā)數(shù)1500的時(shí)候,表現(xiàn)出來(lái)的性能卻是差不多的?

2105 5 3
5個(gè)回答

Jonas

@walkor walkor或者其他同學(xué)了解這塊看到的話,能幫忙解答一下疑問(wèn)么??

  • 864328615 2023-10-31

    大佬這個(gè)命令行工具是什么啊 看著不錯(cuò)

  • Jonas 2023-10-31

    ??看起來(lái)這個(gè)shell客戶端比我提的問(wèn)題更有吸引力
    XTerminal,https://www.xterminal.cn/

  • 小W 2023-10-31

    雖然我也用這個(gè)工具,但是

nitron

epoll是為解決Linux內(nèi)核處理[大量]文件描述符而提出的方案

  • Jonas 2023-10-31

    但是除了解決大量文件描述符,從它改進(jìn)的思路來(lái)看,從select的輪詢變?yōu)閑poll的回調(diào),兩者在調(diào)用的觸發(fā)思路上應(yīng)該也有區(qū)別呀

  • nitron 2023-10-31

    epoll要維持一個(gè)RB樹(shù)和多個(gè)等待隊(duì)列,內(nèi)核開(kāi)銷很大,FD少的時(shí)候,底層開(kāi)銷得不償失
    select監(jiān)聽(tīng)的fd數(shù)量較少,fd就緒所消耗的時(shí)間復(fù)雜度就會(huì)大大減小

  • Jonas 2023-10-31

    所以如果我切換成大量并發(fā)的話應(yīng)該能看出效果,但是因?yàn)閍b壓測(cè)不成功(設(shè)置并發(fā)數(shù)5000,select模式下壓測(cè)報(bào)錯(cuò)),所以反而看不出具體結(jié)果

  • Jonas 2023-10-31

    是這樣理解么?

walkor 打賞
  • 雖然select數(shù)據(jù)結(jié)構(gòu)沒(méi)有epoll高效,但是因?yàn)閴簻y(cè)時(shí)每個(gè)連接都是可讀的,即使select是遍歷也沒(méi)有性能浪費(fèi),結(jié)果差距不大
  • 壓測(cè)時(shí)select可以一次性返回所有可讀描述符,select的調(diào)用頻率明顯降低,提升了一定性能
  • select面對(duì)海量連接并且只有部分連接可讀時(shí)性能應(yīng)該會(huì)有明顯下降
  • 壓測(cè)一般網(wǎng)絡(luò)開(kāi)銷、協(xié)議解析、業(yè)務(wù)等是瓶頸,select和epoll的性能無(wú)法明顯地表現(xiàn)出來(lái)
  • event擴(kuò)展php封裝了一層類,每個(gè)連接都需要new一個(gè)實(shí)例,產(chǎn)生一些開(kāi)銷。短鏈接壓測(cè)時(shí)這個(gè)開(kāi)銷很大,長(zhǎng)連接可以忽略
  • select默認(rèn)只支持1024個(gè)描述符,大于這描述符時(shí)會(huì)超時(shí),壓測(cè)表現(xiàn)為卡住報(bào)錯(cuò)
  • Jonas 2023-10-31

    有點(diǎn)明白了,謝謝walkor

  • Jonas 2023-10-31

    對(duì)了,在壓測(cè)過(guò)程中發(fā)現(xiàn)個(gè)另外的問(wèn)題
    在select場(chǎng)景下,并發(fā)數(shù)過(guò)高時(shí),我看到worker下的tcp連接全是close_wait狀態(tài),一直不會(huì)釋放。
    webman版本v1.5.10

  • walkor 2023-10-31

    正常,select最多處理1024個(gè)連接,超出部分無(wú)法響應(yīng),無(wú)法檢測(cè)到連接關(guān)閉,連接就一直處于close_wait

gddd

你終端叫什么名字

Jonas

梳理了一下select和epoll的內(nèi)部實(shí)現(xiàn),歡迎指正
https://blog.jeyfang.com/archives/574

  • 暫無(wú)評(píng)論
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??