跨主機Docker網路間歇性無法訪問的原因

2021-08-28 14:06:02 字數 505 閱讀 9812

隨著訪問量增加,偶然間發現部署在docker上的某種web服務會發生間歇性的卡死,起初認為是防火牆原因,經過再三排查並沒有發現任何異常記錄。

通過抓包發現客戶端向伺服器傳送了syn後,服務端雖然收到了syn,但是並沒有做任何處理,資料報被丟棄了。經過一段時間後測試又恢復正常,可以響應syn ack,並且正確建立了連線。服務端在測試環境中執行正常,沒有出現過類似的問題,由此可見問題依然產生在網路環境上。

docker發布服務時使用了iptables的nat**,手動刪除對應服務的snat規則後發現syn ack響應正常,由此推斷問題出現在snat上,經過調查發現由於網路是基於nat**且經過snat後,源ip位址均會變更為公網位址,就會導致同乙個位址的資料報頭部時間戳是亂序的,並不能保證線性增長,如果開啟/etc/sysctl.conf中的net.ipv4.tcp_tw_recycle後,一旦有某個客戶端斷開,服務端可能會將該源ip位址中時間戳相對較小的資料報丟棄,導致連線失敗。

關閉net.ipv4.tcp_tw_recycle後問題解決。

間歇性的胡言亂語

我把童年丟了,把青春掉了,去換取乙個名叫成就的東西 我把父母扔了,把自己丟了,去尋找乙個叫愛情的東西。這句話不知怎麼的就打動了我,也許和這句話的內容不相干,但是我就是想到了這些 有時候真想什麼都不管,就這麼墮落下去,怎麼開心怎麼玩,怎麼放鬆怎麼做,可是最後,放不下,前面那麼多的努力說放棄就放棄,實在...

間歇性努力,不是真正的努力

收到乙個很久沒見的朋友的邀請卡,她家孩子要舉辦個人鋼琴演奏會,地點是本地一家專業門檻很高的 廳,我們不禁大吃一驚。記得幾年前孩子們還小的時候,我們幾個媽媽還在互相推薦鋼琴老師,孩子們差不多同時開始學鋼琴,我們的孩子雖一直有在學,但都是三天打魚 兩天曬網。而這位朋友的孩子,卻堅持了下來。問她如何做到的...

資料庫間歇性失敗 OERR ORA 12519

ora 12519 tns 沒有找到適用的服務處理 客戶端連線間歇性失敗,報錯ora 12519 oracle客戶端與伺服器之間正常連線,但是會偶爾連線失敗,在重新連線之後又能連上,也不是網路問題,總結為 連線間歇性失敗。開始的時候考慮到oracle或者客戶端由沒有休眠這種說法,查閱了相關的資料,發...