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

監(jiān)聽了幾個(gè)耗時(shí)事件,幾十個(gè)人訪問就卡住了

mazhaozi

phpsocket.io 寫了一個(gè)服務(wù)端 監(jiān)聽了幾個(gè)事件
事件都是查詢數(shù)據(jù)庫(kù) 數(shù)據(jù)不打
web端定時(shí)請(qǐng)求
幾十個(gè)人訪問就卡住了

lievent和 內(nèi)核都跳優(yōu)了
難道他這種單進(jìn)程,不能做耗時(shí)操作

2951 1 0
1個(gè)回答

walkor 打賞

可以 strace -p 進(jìn)程pid 看下進(jìn)程在干什么。

單進(jìn)程不適合做耗時(shí)操作,比如一個(gè)請(qǐng)求查數(shù)據(jù)庫(kù)耗時(shí)1秒,那么其它請(qǐng)求就會(huì)被阻塞等待,也就是這個(gè)進(jìn)程每秒只能處理一個(gè)請(qǐng)求。幾十個(gè)請(qǐng)求一同發(fā)過來,進(jìn)程要卡幾十秒。假設(shè)說每個(gè)查詢請(qǐng)求0.1秒就完成,那幾十個(gè)客戶端一起發(fā)來請(qǐng)求,進(jìn)程也要幾秒才能處理完,也會(huì)后卡住的現(xiàn)象。

解決辦法:
耗時(shí)的操作可以直接post給tp等mvc框架做,需要推送消息給客戶端的時(shí)候利用phpsocket.io推送。
推送可以參考web-msg-sender的做法,利用curl與phpsocket.io通訊,讓phpsocket.io推送數(shù)據(jù)。
這樣phpsocket.io里沒有任何阻塞的邏輯,linux內(nèi)核優(yōu)化好,libevent/event擴(kuò)展裝好,單進(jìn)程上萬個(gè)客戶端都可以應(yīng)付。

  • mazhaozi 2017-04-13

    明白了 謝謝 strace -p 的時(shí)候那一堆數(shù)據(jù) 看的我眼花繚亂

  • mazhaozi 2017-04-13

    phpsocket.io里面使用 手冊(cè)里面的 如何實(shí)現(xiàn)異步任務(wù) 這個(gè)應(yīng)該可以 應(yīng)付吧

年代過于久遠(yuǎn),無法發(fā)表回答
??