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

怎么查 Gateway 意外退出的狀態(tài)碼(65280、11、9)的意思?

aiselo

做壓力測試時,分配的內(nèi)存是 2.5G,在 1 萬個 websocket 連接的情況下,我用 base64 方式廣播了一個圖片(數(shù)據(jù)包大小大概是 300K)。每次廣播都會引起一個 Gateway 進(jìn)程的意外終止,多次試驗(yàn)后,出現(xiàn)了 65280、11、9 等終止?fàn)顟B(tài)碼,65280 貌似是爆內(nèi)存的意思,另兩個是什么意思?

另外,需要的內(nèi)存量是不是大約是 連接數(shù) 乘以 數(shù)據(jù)包大?。?/p>

下面是廣播前的狀態(tài)

---------------------------------------GLOBAL STATUS--------------------------------------------
Workerman version:3.4.5          PHP version:5.6.30
start time:2017-10-12 11:36:01   run 0 days 0 hours   
load average: 1.01, 2, 1         event-loop:\Workerman\Events\Event
3 workers       9 processes
worker_name           exit_status     exit_count
YourAppBusinessWorker 0                0
YourAppGateway        0                0
Register              0                0
---------------------------------------PROCESS STATUS-------------------------------------------
pid memory  listening                worker_name           connections total_request send_fail throw_exception
28540   2M      none                     YourAppBusinessWorker 5           2535           0         0              
28539   2M      none                     YourAppBusinessWorker 5           2578           0         0              
28538   2M      none                     YourAppBusinessWorker 5           2433           0         0              
28542   7.25M   websocket://0.0.0.0:8282 YourAppGateway        863         10006          0         0              
28546   1.25M   text://0.0.0.0:1238      Register              8           10             0         0              
28541   2M      none                     YourAppBusinessWorker 5           2473           0         0              
28543   7.5M    websocket://0.0.0.0:8282 YourAppGateway        912         10006          0         0              
28545   43.75M  websocket://0.0.0.0:8282 YourAppGateway        5859        10006          0         0              
28544   18M     websocket://0.0.0.0:8282 YourAppGateway        2386        10006          0         0
5363 1 0
1個回答

walkor 打賞

http://doc.workerman.net/315185
部分退出碼在意義在手冊里有寫

65280 你這里應(yīng)該是內(nèi)存超過php.ini限制,導(dǎo)致致命錯誤
11 是有coredump,一般是php的bug或者某個php擴(kuò)展的bug導(dǎo)致
9 是進(jìn)程被kill掉,一般發(fā)生在 restart/stop命令時。由于進(jìn)程繁忙,進(jìn)程收到重啟或者停止命令后在規(guī)定時間內(nèi)(1秒左右)沒有執(zhí)行退出,主進(jìn)程會給他發(fā)送kill命令,強(qiáng)制殺死(產(chǎn)生9退出碼),用來快速完成重啟或者停止操作。

每個socket連接操作系統(tǒng)都會給其分配發(fā)送緩沖區(qū),當(dāng)給1萬客戶端廣播大數(shù)據(jù)時(例如300k),瞬間最差情況會產(chǎn)生1W*300k約3G數(shù)據(jù)在緩沖區(qū),所以php進(jìn)程會占用大量的內(nèi)存,超過php.ini限制(默認(rèn)128M),導(dǎo)致致命錯誤(65280退出碼)。如果網(wǎng)絡(luò)流暢帶寬足夠(需要萬兆帶寬),網(wǎng)卡是萬兆網(wǎng)卡,并且客戶端接收速度夠快, 則會緩解很多,但是也會有不小的內(nèi)存占用。服務(wù)器瞬間發(fā)出去3G的數(shù)據(jù)還是很考驗(yàn)服務(wù)器的性能的,網(wǎng)卡和帶寬都必須萬兆了,cpu拍腦袋也得至少8核 16核甚至更高吧。

  • aiselo 2017-10-12

    謝謝啦

  • aiselo 2017-10-13

    想問下,如果放寬時間上的要求以減少內(nèi)存需求,把數(shù)據(jù)分好幾批發(fā)送給客戶端,有沒有好的處理方式?
    我能想到的是,把各客戶端加入到不同的 group,然后用 定時器 以某個時間間隔調(diào)用
    sendToGroup

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