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

資訊專欄INFORMATION COLUMN

Nginx 504 問題解決 ---- 由 tcp_timestamps 導(dǎo)致的連接問題

Coding01 / 3841人閱讀

摘要:印象中相關(guān)的,在環(huán)境的話,有一個參數(shù)可能會造成丟包。不過總算解決了。參考文章之內(nèi)核參數(shù)優(yōu)化協(xié)議字段導(dǎo)致問題分析內(nèi)核參數(shù)對用戶的影響和導(dǎo)致失敗問題

這兩天生產(chǎn)上面的一個業(yè)務(wù)遇到一個超時的問題, nginx 的日志現(xiàn)象 504 超時。最后終于解決了,寫這篇博客記錄下,梳理下處理的整個過程。

故障排查

第一步
首先是排查 nginx 的 504 錯誤日志,對錯誤日志分析,看是否有規(guī)律,主要是統(tǒng)計來源 IP, URL。

結(jié)論:

排查后的結(jié)果是,出現(xiàn) 504 的 URL 就那么兩三個,來源 IP 沒有規(guī)律,根據(jù)這個找到開發(fā)人員,看是否是其請求的 URL 有問題,通過和開發(fā)人員的定位,排除了 URL 的問題,所以 URL 和 IP 方面排除出去,進行下一步

第二步

在 nginx 的日志中,新增幾個日志記錄字段,新增了 $upstream_status,$upstream_response_time ,$upstream_addr 這三個字段,通過這三個字段是想判斷是后端集群的所有服務(wù)器都出現(xiàn) 504 還是說只有部分,還有每臺的超時時間是多少。

通過在 nginx.conf 配置文件的日志部分新增這三個字段后,加載 nginx ,再查看 nginx 日志發(fā)現(xiàn),是所有的后端集群都出現(xiàn)了 504 的問題

結(jié)論:

初步推斷是不是后端集群服務(wù)器的問題。

第三步

因為我這邊是前端是通過域名訪問的后端,所以為了進一步確定問題,我在前端集群中的一臺 /etc/hosts 上面把域名和后端的真實服務(wù)器做綁定,前端集群中的其他服務(wù)器還是通過域名與 LVS 的 VIP 做綁定訪問

結(jié)論:

排查后的結(jié)果是直接綁定后端真實服務(wù)器的時候,不再出現(xiàn) 504 錯誤,而其他還是通過 VIP 訪問的依舊有 504 錯誤,綜合第二步和第三步驟,可以確定,問題可能應(yīng)該出現(xiàn)在兩個地方

前端服務(wù)器訪問 LVS 的時候

LVS 到 后端服務(wù)器之間

第四步

這步為了排除問題,只好是抓包解決了,使用的工具就是 tcpdumpWireshark。
首先是在 前端服務(wù)器抓包,主要是抓取目的端是 LVS VIP 的

sudo /usr/sbin/tcpdump tcp -vv -i bond0 and  dst host 1.1.1.2 -w ./myi.cap

在 LVS 服務(wù)器上抓包,抓取去往后端集群中服務(wù)器的包

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 到 后端服務(wù)器直接可能有問題,然后詢問下其他的同事,知道這在 3 層做了 snat。印象中 LVS 相關(guān)的,在 NAT 環(huán)境的話,有一個參數(shù)可能會造成丟包。感覺 google 下,最后發(fā)現(xiàn)有可能是 net.ipv4.tcp_timestamps = 1 這個參數(shù)引起的。因此把 timestamps 關(guān)閉。

查看有多少包由于這個原因被拒絕了:

 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 消失,問題解決。不禁哀嚎,我也終于遇到這個問題。不過總算解決了。此文只是一個我的分析排查過程,具體的報文什么的就不貼了,因為我懶得涂鴉關(guān)鍵字(涉及一些 IP 信息,你們懂的)。

導(dǎo)致這個問題的詳細原理,下面的參考文章已經(jīng)講的很清楚,我就不講了。

參考文章

Linux 之 TCP/IP 內(nèi)核參數(shù)優(yōu)化

tcp 協(xié)議 timestamp 字段導(dǎo)致問題分析

tcp 內(nèi)核參數(shù)對 NAT 用戶的影響

tcp_tw_recycle和tcp_timestamps導(dǎo)致connect失敗問題

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

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

相關(guān)文章

  • Nginx高并發(fā)下優(yōu)化

    摘要:效率低,主要是輪詢效率低,而且還要分別輪詢?nèi)齻€事件描述符的集合。不同點是為事件事件以及事件只創(chuàng)建一個集合,在每個描述符對應(yīng)的結(jié)構(gòu)上分別設(shè)置事件事件以及事件。 寫在前面 最近在進行服務(wù)器的優(yōu)化,正好在看nginx相關(guān)的知識,所以把一些知識整理一下。參考資料為《Nginx高性能web服務(wù)器詳解》,建議大家都去讀讀這本書。我的機器為四核CPU,16G內(nèi)存。 內(nèi)核參數(shù)優(yōu)化 把如下的參數(shù)追加到L...

    lavor 評論0 收藏0
  • redis連接成功操作無反應(yīng),nginx 504另一個原因

    摘要:遇到的個問題問題啟動后,連接成功,時無反應(yīng),查看進程存在。問題,,訪問頁面正常,訪問頁面每次出現(xiàn)錯誤,修改配置文件調(diào)大響應(yīng)時間均無效。一些嘗試這兩個問題不是同一天遇到的,究根結(jié)底原因是一樣的。 遇到的2個問題 問題1: redis-server啟動后,redis-client連接成功,set時無反應(yīng),查看redis-server進程存在。問題2: nginx,php-fpm,訪問ht...

    I_Am 評論0 收藏0

發(fā)表評論

0條評論

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