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

數(shù)據(jù)量上300以后經(jīng)常會出現(xiàn)連接失敗的問題

frontlon

有的時候播間連接數(shù)達到300人的時候,socket連接就會一直pending...
最后就連接失敗~~不能進行數(shù)據(jù)接收。

請問這個問題處在哪里?應(yīng)該如何解決和避免?

3255 2 0
2個回答

frontlon

服務(wù)器是centos的。我用php啟動的workerman進程,發(fā)現(xiàn)該php進程CPU占用97%到100%。
請問該如何優(yōu)化下?

  • 暫無評論
walkor 打賞

這個是PHPSocket.IO,不是直接用的workerman。

cpu占用多少和業(yè)務(wù)模型以及代碼質(zhì)量有關(guān)系。
業(yè)務(wù)模型:比如300個人在線,每個人1秒向其它300人廣播消息,那么每秒就是300*300=9W/秒的消息量,cpu占用肯定會很高。
代碼質(zhì)量:還要檢查業(yè)務(wù)邏輯代碼是否有問題,比如死循環(huán)、瘋狂循環(huán)超大數(shù)組等導致cpu很高。

計算用戶訪問量
你需要計算下用戶訪問量,看看PHPPSocket.IO每秒接收消息 發(fā)送消息量有多少?是否可以在業(yè)務(wù)上優(yōu)化下減少消息量。300人在線導致cpu97%到100%確實有點夸張,不是業(yè)務(wù)模型有問題就是代碼質(zhì)量問題。

對比
http://www.wtbis.cn頁面底部 用戶在線數(shù)實時統(tǒng)計功能就是PHPSocket.IO做的,每秒廣播給所有在線用戶當前在線人數(shù)以及打開頁面數(shù),每天下午峰值也是300左右,但是因為業(yè)務(wù)模型簡單,能夠計算到消息量 300/每秒 左右,所以能看到服務(wù)器負載是0,cpu消耗幾乎也是0

建議
另外PHPSocket.IO是單進程的,內(nèi)部工作機制比較復雜,性能相比workerman或者GatewayWorker差很多,建議聊天服務(wù)用GatewayWorker去做,可以多進程多服務(wù)器部署,支持上萬人很輕松。

  • frontlon 2017-02-15

    謝謝了。我抽空把程序改成Gatewayworker版的。
    請問目前在php.ini方面有什么優(yōu)化建議嗎?

  • walkor 2017-02-15

    php.ini沒有什么好優(yōu)化的

  • frontlon 2017-02-15

    我的網(wǎng)站類似于即時留言板,用戶提問后不在前臺顯示,后臺管理員回復后,自動在前臺顯示信息。這個功能用GatewayWorker合適嗎?

  • frontlon 2017-02-15

    @1133:還有就是,如果現(xiàn)在改成GatewayWorker,前臺js部分不用改變吧?只改變php程序即可?

  • walkor 2017-02-15

    js要改。你最好確認下到底是什么問題再動手

  • frontlon 2017-02-15

    目前問題就是,workerman占滿了CPU,導致很多時候連接失敗。但是小弟是菜鳥,實在想不出什么解決辦法~

  • stephen 2017-02-15

    workerman 只是一個運行 app 的容器,你應(yīng)該在你的應(yīng)用里面設(shè)置記錄運行的調(diào)試代碼,不斷定位直到找到什么地方最耗時。

    比如

    $code_xxx_start = microtime(true);
    file_put_contents('/tmp/app_run.log', 'code:xxx:start'.$code_xxx_start."\n", FILE_APPEND)

    // codes

    file_put_contents('/tmp/app_run.log', 'code:xxx:end'.microtime(true)-$code_xxx_start."\n", FILE_APPEND)

    從你的應(yīng)用的入口代碼開始,一步一步不斷縮小范圍。

  • frontlon 2017-02-15

    @1 了解了。您說的方法我試試。

  • frontlon 2017-02-15

    今天我把Workerman移動到windows服務(wù)器了,開始運行正常,但1個小時候在cmd中報了如下錯誤:
    next called after client was closed - ignoring socket
    next called after client was closed - ignoring socket
    next called after client was closed - ignoring socket
    next called after client was closed - ignoring socket
    next called after client was closed - ignoring socket
    next called after client was closed - ignoring socket
    next called after client was closed - ignoring socket
    next called after client was closed - ignoring socket
    next called after client was closed - ignoring socket
    next called after client was closed - ignoring socket
    .......

    這個錯誤非常多。

    請問這是哪里的問題?

  • xiuwang 2017-02-16

    官網(wǎng)說win系統(tǒng)只用做開發(fā)調(diào)試啊,不建議用在生產(chǎn)環(huán)境

  • frontlon 2017-02-18

    @1459:了解了,謝謝啦!

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