摘要:印象中相關的,在環境的話,有一個參數可能會造成丟包。不過總算解決了。參考文章之內核參數優化協議字段導致問題分析內核參數對用戶的影響和導致失敗問題
這兩天生產上面的一個業務遇到一個超時的問題, nginx 的日志現象 504 超時。最后終于解決了,寫這篇博客記錄下,梳理下處理的整個過程。
故障排查第一步
首先是排查 nginx 的 504 錯誤日志,對錯誤日志分析,看是否有規律,主要是統計來源 IP, URL。
結論:
排查后的結果是,出現 504 的 URL 就那么兩三個,來源 IP 沒有規律,根據這個找到開發人員,看是否是其請求的 URL 有問題,通過和開發人員的定位,排除了 URL 的問題,所以 URL 和 IP 方面排除出去,進行下一步
第二步
在 nginx 的日志中,新增幾個日志記錄字段,新增了 $upstream_status,$upstream_response_time ,$upstream_addr 這三個字段,通過這三個字段是想判斷是后端集群的所有服務器都出現 504 還是說只有部分,還有每臺的超時時間是多少。
通過在 nginx.conf 配置文件的日志部分新增這三個字段后,加載 nginx ,再查看 nginx 日志發現,是所有的后端集群都出現了 504 的問題
結論:
初步推斷是不是后端集群服務器的問題。
第三步
因為我這邊是前端是通過域名訪問的后端,所以為了進一步確定問題,我在前端集群中的一臺 /etc/hosts 上面把域名和后端的真實服務器做綁定,前端集群中的其他服務器還是通過域名與 LVS 的 VIP 做綁定訪問
結論:
排查后的結果是直接綁定后端真實服務器的時候,不再出現 504 錯誤,而其他還是通過 VIP 訪問的依舊有 504 錯誤,綜合第二步和第三步驟,可以確定,問題可能應該出現在兩個地方
前端服務器訪問 LVS 的時候
LVS 到 后端服務器之間
第四步
這步為了排除問題,只好是抓包解決了,使用的工具就是 tcpdump 和 Wireshark。
首先是在 前端服務器抓包,主要是抓取目的端是 LVS VIP 的
sudo /usr/sbin/tcpdump tcp -vv -i bond0 and dst host 1.1.1.2 -w ./myi.cap
在 LVS 服務器上抓包,抓取去往后端集群中服務器的包
sudo /usr/sbin/tcpdump tcp -vv and dst host 1.21.4.11 or dst host 1.21.4.12 or dst host 1.21.4.13 or dst host 1.21.4.14 -w ./user.cap
最后把抓取的包用 wireshark 查看分析。
第五步
通過抓包確定了是 LVS 到 后端服務器直接可能有問題,然后詢問下其他的同事,知道這在 3 層做了 snat。印象中 LVS 相關的,在 NAT 環境的話,有一個參數可能會造成丟包。感覺 google 下,最后發現有可能是 net.ipv4.tcp_timestamps = 1 這個參數引起的。因此把 timestamps 關閉。
查看有多少包由于這個原因被拒絕了:
netstat -s |grep rejects 172 packets rejects in established connections because of timestamp
sudo vim /etc/sysctl.conf # 在該文件最后加入以下 net.ipv4.tcp_timestamps = 0 ###生效 sudo /sbin/sysctl -p
最后觀察日志,504 消失,問題解決。不禁哀嚎,我也終于遇到這個問題。不過總算解決了。此文只是一個我的分析排查過程,具體的報文什么的就不貼了,因為我懶得涂鴉關鍵字(涉及一些 IP 信息,你們懂的)。
導致這個問題的詳細原理,下面的參考文章已經講的很清楚,我就不講了。
參考文章Linux 之 TCP/IP 內核參數優化
tcp 協議 timestamp 字段導致問題分析
tcp 內核參數對 NAT 用戶的影響
tcp_tw_recycle和tcp_timestamps導致connect失敗問題
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39086.html
摘要:效率低,主要是輪詢效率低,而且還要分別輪詢三個事件描述符的集合。不同點是為事件事件以及事件只創建一個集合,在每個描述符對應的結構上分別設置事件事件以及事件。 寫在前面 最近在進行服務器的優化,正好在看nginx相關的知識,所以把一些知識整理一下。參考資料為《Nginx高性能web服務器詳解》,建議大家都去讀讀這本書。我的機器為四核CPU,16G內存。 內核參數優化 把如下的參數追加到L...
摘要:遇到的個問題問題啟動后,連接成功,時無反應,查看進程存在。問題,,訪問頁面正常,訪問頁面每次出現錯誤,修改配置文件調大響應時間均無效。一些嘗試這兩個問題不是同一天遇到的,究根結底原因是一樣的。 遇到的2個問題 問題1: redis-server啟動后,redis-client連接成功,set時無反應,查看redis-server進程存在。問題2: nginx,php-fpm,訪問ht...
閱讀 3490·2021-11-12 10:36
閱讀 2864·2021-09-22 15:35
閱讀 2814·2021-09-04 16:41
閱讀 1167·2019-08-30 15:55
閱讀 3580·2019-08-29 18:43
閱讀 2075·2019-08-23 18:24
閱讀 1419·2019-08-23 18:10
閱讀 1924·2019-08-23 11:31