WebSocket服務(wù)掛掉問題記錄

一醉顽、背景

之前使用websocket服務(wù)為H5頁面進行實時數(shù)據(jù)推送沼溜,突然有一天產(chǎn)品給我反饋,說該頁面的實時刷新功能失效了游添,于是開始進行排查和處理系草,并將過程記錄下來。

這個服務(wù)是有監(jiān)控程序的唆涝,每分鐘檢查一次websocket是否正常找都,不正常的話會將進程全部殺掉進行重啟。

當天接到反饋后石抡,我看了下服務(wù)檐嚣,監(jiān)控程序是正常的,會對websocket進行重啟啰扛,但每次重啟過后不超過30s嚎京,websocket的master節(jié)點就又掛了。

情況就是這樣的隐解,下面進入排查流程鞍帝。

二、master節(jié)點為什么會掛掉煞茫?

官網(wǎng)上有列舉以下三種情況會導(dǎo)致無法提供服務(wù):

(1)系統(tǒng)負載過大swoole無法申請到內(nèi)存而掛掉
(2)swoole底層發(fā)生段錯誤
(3)Server占用內(nèi)存過大被內(nèi)核Kill帕涌,或者被某些程序誤殺

但是根據(jù)當前環(huán)境,并不符合上述情況续徽,所以這個問題暫時還沒有找到具體的原因蚓曼。

三、根據(jù)日志報錯解決

(1)首先看了下nginx的error.log钦扭,發(fā)現(xiàn)大量報錯:

13247#0: *176909901 connect() failed (111: Connection refused) while connecting to upstream,

看了下nginx配置,可以看出一開始的配置是很小的纫版,所以對幾個配置進行增大

worker_processes  1;  //worker角色的進程個數(shù)
worker_rlimit_nofile 1024;// 更改worker進程的最大打開文件數(shù)限制。
worker_connections  1024;//每一個worker進程能并發(fā)處理(發(fā)起)的最大連接數(shù)(包含所有連接數(shù))

(2)swoole自帶的log日志中也有很多報錯:

ERROR   swServer_master_onAccept (ERROR 502): accept() failed. Error: Too many open files[24]

(3)還有在程序啟動會輸出:

WARN    swServer_start_check: serv->max_conn is exceed the maximum value[1024].

官方解釋為啥會出現(xiàn)這個報錯,所以說明當前的問題就是因為ulimit -n設(shè)置的過低導(dǎo)致的問題:

max_connection最大不得超過操作系統(tǒng)ulimit -n的值客情,否則會報一條警告信息其弊,并重置為ulimit -n的值

綜合(2)(3)可以得出結(jié)論就出在這個ulimit -n上面了,之前也修改過這個值但實際上并沒有生效膀斋。

ulimit -n 指定同一時間最多可打開的文件數(shù)
vim /etc/security/limits.conf  -------永久修改
ulimit -n 1024 -----------------------即時修改梭伐,但重啟后就無效了

四、后續(xù)問題

(1)訪問量上來后仰担,發(fā)現(xiàn)會出現(xiàn)redis偶爾鏈接失敗的報錯糊识,查找原因是因為大量建立鏈接導(dǎo)致機器上的端口都在使用中,通過調(diào)整內(nèi)核參數(shù)解決。


vim /etc/sysctl.conf

編輯文件赂苗,加入以下內(nèi)容:
net.ipv4.tcp_tw_reuse = 1 //表示開啟重用铃将。允許將TIME-WAIT sockets重新用于新的TCP連接,默認為0哑梳,表示關(guān)閉劲阎;
net.ipv4.tcp_tw_recycle = 1 //表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0鸠真,表示關(guān)閉悯仙。

然后執(zhí)行/sbin/sysctl -p讓參數(shù)生效。

(2)訂閱redis后吠卷,一段時間后會無法收到信息锡垄。原因暫時不明,通過增加鏈接超時捕獲異常后重新建立訂閱請求解決祭隔。

ini_set('default_socket_timeout', 10);

五货岭、后記

整理文檔的同時就是將解決問題的過程重新復(fù)盤一遍,以后解決這種問題的思路就會比較清晰了疾渴。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末千贯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子搞坝,更是在濱河造成了極大的恐慌搔谴,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桩撮,死亡現(xiàn)場離奇詭異敦第,居然都是意外死亡,警方通過查閱死者的電腦和手機店量,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門芜果,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人融师,你說我怎么就攤上這事右钾。” “怎么了诬滩?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵霹粥,是天一觀的道長灭将。 經(jīng)常有香客問我疼鸟,道長,這世上最難降的妖魔是什么庙曙? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任空镜,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吴攒。我一直安慰自己张抄,他們只是感情好,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布洼怔。 她就那樣靜靜地躺著署惯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪镣隶。 梳的紋絲不亂的頭發(fā)上极谊,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音安岂,去河邊找鬼轻猖。 笑死,一個胖子當著我的面吹牛域那,可吹牛的內(nèi)容都是我干的咙边。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼次员,長吁一口氣:“原來是場噩夢啊……” “哼败许!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起淑蔚,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤檐束,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后束倍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體被丧,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年绪妹,在試婚紗的時候發(fā)現(xiàn)自己被綠了甥桂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡邮旷,死狀恐怖黄选,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情婶肩,我是刑警寧澤办陷,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站律歼,受9級特大地震影響民镜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜险毁,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一制圈、第九天 我趴在偏房一處隱蔽的房頂上張望们童。 院中可真熱鬧,春花似錦鲸鹦、人聲如沸慧库。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽齐板。三九已至,卻和暖如春葛菇,著一層夾襖步出監(jiān)牢的瞬間覆积,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工熟呛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宽档,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓庵朝,卻偏偏與公主長得像吗冤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子九府,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容