摘要:一背景之前使用服務為頁面進行實時數據推送,突然有一天產品給我反饋,說該頁面的實時刷新功能失效了,于是開始進行排查和處理,并將過程記錄下來。這個服務是有監控程序的,每分鐘檢查一次是否正常,不正常的話會將進程全部殺掉進行重啟。
一、背景之前使用websocket服務為H5頁面進行實時數據推送,突然有一天產品給我反饋,說該頁面的實時刷新功能失效了,于是開始進行排查和處理,并將過程記錄下來。
這個服務是有監控程序的,每分鐘檢查一次websocket是否正常,不正常的話會將進程全部殺掉進行重啟。
當天接到反饋后,我看了下服務,監控程序是正常的,會對websocket進行重啟,但每次重啟過后不超過30s,websocket的master節點就又掛了。
情況就是這樣的,下面進入排查流程。
二、master節點為什么會掛掉?在官網上有列舉以下三種情況會導致無法提供服務:
(1)系統負載過大swoole無法申請到內存而掛掉 (2)swoole底層發生段錯誤 (3)Server占用內存過大被內核Kill,或者被某些程序誤殺
但是根據當前環境,并不符合上述情況,所以這個問題暫時還沒有找到具體的原因。
三、根據日志報錯解決(1)首先看了下nginx的error.log,發現大量報錯:
13247#0: *176909901 connect() failed (111: Connection refused) while connecting to upstream,
看了下nginx配置,可以看出一開始的配置是很小的,所以對幾個配置進行增大
worker_processes 1; //worker角色的進程個數 worker_rlimit_nofile 1024;// 更改worker進程的最大打開文件數限制。 worker_connections 1024;//每一個worker進程能并發處理(發起)的最大連接數(包含所有連接數)
(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].
官方解釋為啥會出現這個報錯,所以說明當前的問題就是因為ulimit -n設置的過低導致的問題:
max_connection最大不得超過操作系統ulimit -n的值,否則會報一條警告信息,并重置為ulimit -n的值
綜合(2)(3)可以得出結論就出在這個ulimit -n上面了,之前也修改過這個值但實際上并沒有生效。
ulimit -n 指定同一時間最多可打開的文件數
vim /etc/security/limits.conf -------永久修改
ulimit -n 1024 -----------------------即時修改,但重啟后就無效了
四、后續問題
(1)訪問量上來后,發現會出現redis偶爾鏈接失敗的報錯,查找原因是因為大量建立鏈接導致機器上的端口都在使用中,通過調整內核參數解決。
vim /etc/sysctl.conf 編輯文件,加入以下內容: net.ipv4.tcp_tw_reuse = 1 //表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認為0,表示關閉; net.ipv4.tcp_tw_recycle = 1 //表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。 然后執行/sbin/sysctl -p讓參數生效。
(2)訂閱redis后,一段時間后會無法收到信息。原因暫時不明,通過增加鏈接超時捕獲異常后重新建立訂閱請求解決。
ini_set("default_socket_timeout", 10);
五、后記
整理文檔的同時就是將解決問題的過程重新復盤一遍,以后解決這種問題的思路就會比較清晰了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/6897.html
摘要:本篇博客主要介紹了自動化工具這個概念,在微服務集群當中的作用,算拋磚引玉,歡迎大家提出自己的見解。而在微服務中,單個服務重新部署的代價明顯要小的多。 本篇博客主要介紹了自動化工具這個概念,在微服務集群當中的作用,算拋磚引玉,歡迎大家提出自己的見解。 寫在前面 在了解自動化工具的概念之前,我們先了解一下微服務和集群的概念。 什么是微服務 這個概念其實有些廣泛,而我的知識廣度也有限,我會盡...
摘要:考拉訂單流推送申報單推送物流信息等供應鏈相關業務已接入分片任務,極大提高了業務吞吐量降低壓力,提升了通關效率。支撐雙十一黑五雙十二等大促,高峰期統一暫停非關鍵定時任務,讓出系統資源,提高業務系統穩定性。 此文已由作者楊凱明授權網易云社區發布。 歡迎訪問網易云社區,了解更多網易技術產品運營經驗。 1.背景 目前項目中使用的定時任務框架存在下面這些問題 沒有統一的定時任務管理平臺 目前項目...
摘要:在十二贊的深度應用我們是十二贊,一個致力于幫助電商賣家進入小程序的小團隊,我們的主頁是。我們的整個業務構建于阿里云之上,有臺每一對都有獨立的外網同時也在同一個內網之中。,我們把所有的文件都挪到阿里云的服務上。當然,也是可執行文件發布的。 Golang 在十二贊的深度應用 我們是十二贊,一個致力于幫助電商賣家進入小程序的小團隊,我們的主頁是http://www.12zan.cn/。在實際...
摘要:創建彈幕功能的類及基本參數處理布局時需要注意的默認寬為,高為,我們要保證完全覆蓋整個視頻,需要讓與寬高相等。因為我們不確定每一個使用該功能的視頻的寬高都是一樣的,所以畫布的寬高并沒有通過來設置,而是通過在類創建實例初始化屬性的時候動態設置。 showImg(https://segmentfault.com/img/remote/1460000018998386); 閱讀原文 頁面布...
摘要:創建彈幕功能的類及基本參數處理布局時需要注意的默認寬為,高為,我們要保證完全覆蓋整個視頻,需要讓與寬高相等。因為我們不確定每一個使用該功能的視頻的寬高都是一樣的,所以畫布的寬高并沒有通過來設置,而是通過在類創建實例初始化屬性的時候動態設置。 showImg(https://segmentfault.com/img/remote/1460000018998386); 閱讀原文 頁面布...
閱讀 661·2021-11-15 11:39
閱讀 2895·2021-10-08 10:04
閱讀 3259·2019-08-30 10:57
閱讀 3021·2019-08-26 13:25
閱讀 1902·2019-08-26 12:14
閱讀 2633·2019-08-23 15:27
閱讀 2992·2019-08-23 15:18
閱讀 1773·2019-08-23 14:26