最近經常收到業務方配置的es查詢延遲告警,同樣的請求手動在kibana控制台執行只需幾十毫秒就返回結果。受影響的整個鏈路情況如下,php應用程式通過部署在es集群各節點上的nginx訪問es請求查詢資料。
查詢延遲原因可能有2個方面的因素:
1、es集群異常,es應用故障或者集群節點主機故障。
集群節點主機級別的問題主要通過觀察node_exporter中的核心指標有無異常,包括cpu,記憶體,網路,tcp連線,上下問切換,磁碟容量及io。
2、業務請求異常,業務請求量突增高於正常的水平。
業務上的請求異常主要通過分析es各節點nginx**的訪問日誌錯誤日誌,前端web服務以及php的日誌。
分析日誌的過程異常痛苦,由於延遲出現在10分鐘的時間段, 所以想要分析業務量的波動是否正常,需要統計日誌同比環比,進行對比。日誌檔案大,使用正則,組合grep,awk,sed耗時又消耗效能,效率又低。最終梳理日誌,並對關鍵字段進行解析,接入袋鼠雲日誌分析系統,終於擺脫登入各伺服器命令列統計的慘狀,配置應用場景,訪問趨勢清晰明了。
檢視監控圖表發現業務訪問並無異常,使用sar -b檢視記憶體es節點記憶體情況,發現在問題時間點各節點的pgscand/s一列數值較高,說明核心執行緒kswapd**記憶體,由於系統free記憶體不足,當應用突然需要額外記憶體。使用者程序或執行緒分配記憶體或發生缺頁中斷時,會在使用者執行緒上下文中直接進行**記憶體(pgscand)和分配記憶體。
建議根據機器的規格調大以下兩個值,32c64g機器可以調大至2-4g
開發環境 測試環境 預生產環境 生產環境區別
環境分以下幾種 1.開發和配置環境 所有的開發和配置在這個環境裡進行。一般情況下,只有這個環境可以改配置和進行開發,並且一般不在這個環境下建立資料。開發環境就是每個開發人員電腦上的開發環境,只有開發人員可以配置和開發,寫資料測試放在測試環境 2.測試環境 3.預生產環境 不是必須的 從生產環境不定期...
開發環境 測試環境 預生產環境 生產環境區別
環境分以下幾種 1.開發和配置環境 所有的開發和配置在這個環境裡進行。一般情況下,只有這個環境可以改配置和進行開發,並且一般不在這個環境下建立資料。開發環境就是每個開發人員電腦上的開發環境,只有開發人員可以配置和開發,寫資料測試放在測試環境 2.測試環境 3.預生產環境 不是必須的 從生產環境不定期...
生產環境Consul Prometheus監控
consul支援眾多監控工具進行對自身監控。我們這裡使用prometheus進行監控。server監控我們採用prometheus基於檔案的自動發現 file sd configs 也可以使用靜態配置 static config 因為我們要做consul的報警,報警需要有主機名,所以我們使用基於檔案...