一、背景和現象 初創公司,架構lanmp,web前端和後端分開伺服器,業務驅動主要是nginx和apache,nginx主要是處理靜態文件和反向代理,前後端、搜索引擎、緩存、隊列等附加的服務都是用docker容器部署。因為比較初級,上傳文件和採集文件都是直接寫在硬碟上,涉及到的目錄共用,就在其中一臺 ...
一、背景和現象 初創公司,架構lanmp,web前端和後端分開伺服器,業務驅動主要是nginx和apache,nginx主要是處理靜態文件和反向代理,前後端、搜索引擎、緩存、隊列等附加的服務都是用docker容器部署。因為比較初級,上傳文件和採集文件都是直接寫在硬碟上,涉及到的目錄共用,就在其中一臺伺服器存儲並且nfs共用。我們暫且分為ECS1(apache1)、ECS2(apache2)、ECS3(nginx)。某天網站業務中斷,但是沒有報錯。一直在等待響應,預設響應超時是一分鐘,所以很基礎高可用沒有起到作用。中斷10分鐘左右,重啟服務,提示“open too many files”,但是lsof統計沒幾個。因為初級處理不了,所以直接重啟伺服器,一段時間後一切恢復正常,可是第二天又來一次這種情況。 二、第一次出現後的排查思路 本來第一次發現這種問題的時候就要追查原因了,看了一下zabbix監控圖像其中斷了十分鐘,包括網路、記憶體、CPU、硬碟、IO等監控數據。首先想到的是網路問題,結論是zabbix-servert獲取不到了zabbix-agent採集的數據,估計就是網路不通了。







