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

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

mazhaozi

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

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

3030 1 0
1個回答

walkor 打賞

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

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

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

  • mazhaozi 2017-04-13

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

  • mazhaozi 2017-04-13

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

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