成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

CloudwiseAPM / 3437人閱讀

摘要:一背景之前使用服務(wù)為頁面進(jìn)行實(shí)時數(shù)據(jù)推送,突然有一天產(chǎn)品給我反饋,說該頁面的實(shí)時刷新功能失效了,于是開始進(jìn)行排查和處理,并將過程記錄下來。這個服務(wù)是有監(jiān)控程序的,每分鐘檢查一次是否正常,不正常的話會將進(jìn)程全部殺掉進(jìn)行重啟。

一、背景

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

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

當(dāng)天接到反饋后,我看了下服務(wù),監(jiān)控程序是正常的,會對websocket進(jìn)行重啟,但每次重啟過后不超過30s,websocket的master節(jié)點(diǎn)就又掛了。

情況就是這樣的,下面進(jìn)入排查流程。

二、master節(jié)點(diǎn)為什么會掛掉?

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

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

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

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

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

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

看了下nginx配置,可以看出一開始的配置是很小的,所以對幾個配置進(jìn)行增大

worker_processes  1;  //worker角色的進(jìn)程個數(shù)
worker_rlimit_nofile 1024;// 更改worker進(jìn)程的最大打開文件數(shù)限制。
worker_connections  1024;//每一個worker進(jìn)程能并發(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)這個報錯,所以說明當(dāng)前的問題就是因為ulimit -n設(shè)置的過低導(dǎo)致的問題:

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

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

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

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

vim /etc/sysctl.conf

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

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

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

ini_set("default_socket_timeout", 10);
五、后記

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/6897.html

相關(guān)文章

  • 聊聊微服務(wù)集群當(dāng)中的自動化工具

    摘要:本篇博客主要介紹了自動化工具這個概念,在微服務(wù)集群當(dāng)中的作用,算拋磚引玉,歡迎大家提出自己的見解。而在微服務(wù)中,單個服務(wù)重新部署的代價明顯要小的多。 本篇博客主要介紹了自動化工具這個概念,在微服務(wù)集群當(dāng)中的作用,算拋磚引玉,歡迎大家提出自己的見解。 寫在前面 在了解自動化工具的概念之前,我們先了解一下微服務(wù)和集群的概念。 什么是微服務(wù) 這個概念其實(shí)有些廣泛,而我的知識廣度也有限,我會盡...

    Hancock_Xu 評論0 收藏0
  • 考拉定時任務(wù)框架kSchedule

    摘要:考拉訂單流推送申報單推送物流信息等供應(yīng)鏈相關(guān)業(yè)務(wù)已接入分片任務(wù),極大提高了業(yè)務(wù)吞吐量降低壓力,提升了通關(guān)效率。支撐雙十一黑五雙十二等大促,高峰期統(tǒng)一暫停非關(guān)鍵定時任務(wù),讓出系統(tǒng)資源,提高業(yè)務(wù)系統(tǒng)穩(wěn)定性。 此文已由作者楊凱明授權(quán)網(wǎng)易云社區(qū)發(fā)布。 歡迎訪問網(wǎng)易云社區(qū),了解更多網(wǎng)易技術(shù)產(chǎn)品運(yùn)營經(jīng)驗。 1.背景 目前項目中使用的定時任務(wù)框架存在下面這些問題 沒有統(tǒng)一的定時任務(wù)管理平臺 目前項目...

    AlexTuan 評論0 收藏0
  • Golang 在十二贊的深度應(yīng)用

    摘要:在十二贊的深度應(yīng)用我們是十二贊,一個致力于幫助電商賣家進(jìn)入小程序的小團(tuán)隊,我們的主頁是。我們的整個業(yè)務(wù)構(gòu)建于阿里云之上,有臺每一對都有獨(dú)立的外網(wǎng)同時也在同一個內(nèi)網(wǎng)之中。,我們把所有的文件都挪到阿里云的服務(wù)上。當(dāng)然,也是可執(zhí)行文件發(fā)布的。 Golang 在十二贊的深度應(yīng)用 我們是十二贊,一個致力于幫助電商賣家進(jìn)入小程序的小團(tuán)隊,我們的主頁是http://www.12zan.cn/。在實(shí)際...

    Honwhy 評論0 收藏0
  • Canvas + WebSocket + Redis 實(shí)現(xiàn)一個視頻彈幕

    摘要:創(chuàng)建彈幕功能的類及基本參數(shù)處理布局時需要注意的默認(rèn)寬為,高為,我們要保證完全覆蓋整個視頻,需要讓與寬高相等。因為我們不確定每一個使用該功能的視頻的寬高都是一樣的,所以畫布的寬高并沒有通過來設(shè)置,而是通過在類創(chuàng)建實(shí)例初始化屬性的時候動態(tài)設(shè)置。 showImg(https://segmentfault.com/img/remote/1460000018998386); 閱讀原文 頁面布...

    WelliJhon 評論0 收藏0
  • Canvas + WebSocket + Redis 實(shí)現(xiàn)一個視頻彈幕

    摘要:創(chuàng)建彈幕功能的類及基本參數(shù)處理布局時需要注意的默認(rèn)寬為,高為,我們要保證完全覆蓋整個視頻,需要讓與寬高相等。因為我們不確定每一個使用該功能的視頻的寬高都是一樣的,所以畫布的寬高并沒有通過來設(shè)置,而是通過在類創(chuàng)建實(shí)例初始化屬性的時候動態(tài)設(shè)置。 showImg(https://segmentfault.com/img/remote/1460000018998386); 閱讀原文 頁面布...

    gekylin 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<