亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

docker swarm mode 下容器重啟IP引發(fā)的 CLOSE_WAIT 問題

BlackHole1 / 3587人閱讀

摘要:問題問題簡述如下圖后端寫入的日志丟失并且無報錯因為不支持時序圖把時序圖代碼嵌入在代碼里問題定位過程為什么卡在看狀態(tài)轉(zhuǎn)換圖可以看到收到了一直沒有一直卡在和實際的代碼是吻合的那么為什么在引發(fā)后發(fā)消息仍然不報錯呢因為協(xié)議允許在收到后繼續(xù)

問題 問題簡述

如下圖. server docker restart后, client端寫入的日志丟失, 并且無報錯.
因為不支持時序圖, 把時序圖代碼嵌入在代碼里.

?```sequence
client->server: log_data
client->server: log_data
server->server: docker restart
server->client: fin
client->server: log_data loss without error
?```
tcp state diagram

問題定位過程 為什么卡在CLOSE_WAIT.

看tcp狀態(tài)轉(zhuǎn)換圖, 可以看到client收到了fin, 一直沒有recv, 一直卡在CLOSE_WAIT. 和實際的代碼是吻合的.
那么, 為什么在server docker restart 引發(fā)CLOSE_WAIT后, client發(fā)消息仍然不報錯呢?
因為:

tcp協(xié)議允許client在收到fin后, 繼續(xù)發(fā)送消息.

server 在docker restart后 ip 改變, client還是往原來的ip發(fā)送消息, 沒有主機(jī)通知client rst, 導(dǎo)致消息在系統(tǒng)buffer里積壓.

積壓信息如下:

root@9eeaefa7fe57:/# netstat -nap | grep 27017 | grep 10.0.0
tcp        1  402 10.0.0.186:62281        10.0.0.16:27017         CLOSE_WAIT  4308/server
root@9eeaefa7fe57:/# netstat -nap | grep 27017 | grep 10.0.0
tcp        1  70125 10.0.0.186:62281        10.0.0.16:27017         CLOSE_WAIT  4308/server

此時, 在elixir socket接口層面來看, 不管socket的狀態(tài), 還是發(fā)送, 都是ok的.

iex(client@client.)25> socket |> :inet.port
{:ok, 57395}
iex(client@client.)26> socket |> :gen_tcp.send("aaa")
:ok

如果主動close, 則會進(jìn)入LAST_ACK狀態(tài)

iex(client@client.)27> socket |> :gen_tcp.close()    
:ok
root@9eeaefa7fe57:/# netstat -nap | grep 27017 | grep 10.0.0
tcp        1  70126 10.0.0.186:62281        10.0.0.16:27017         LAST_ACK    -   
CLOSE_WAIT的恢復(fù)

如果代碼還是只發(fā)不收. 是檢測不到CLOSE_WAIT的. 顯然, 應(yīng)用層心跳是一個解決方案. 那么, 不使用心跳, 只發(fā)不收的情況下, 什么時候才能檢測到錯誤呢?

send buffer 滿

tcp keepalive, 默認(rèn)情況下需要2小時才能檢測到連接錯誤. 見linux keepalive探測對應(yīng)用層socket api的影響

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

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

相關(guān)文章

  • 基于 Docker 1.12 Swarm 集群管理開發(fā)實踐

    摘要:由于沒有了中心化的負(fù)載均衡器,集群不會因某臺機(jī)器異常而導(dǎo)致整個服務(wù)對外不可用,很好的避免了單點問題,同時也帶了可擴(kuò)展性。 Mesos/Marathon 折騰久了,我們一直希望有機(jī)會深入到 Swarm 內(nèi)部一探究竟。 另外, Mesos 這一套東西雖然是久經(jīng)企業(yè)級考驗的, 但是安裝、部署和使用相對復(fù)雜,上手有門檻。同時,在今年的 DockerCon 上,內(nèi)置了Swarm 功能的 Dock...

    My_Oh_My 評論0 收藏0
  • 數(shù)人云工程師手記 | 新手快速入門Docker最新版管理工具

    摘要:在之前公眾號的數(shù)人云工程師手記基于的集群管理開發(fā)實踐對的服務(wù)發(fā)現(xiàn)及負(fù)載均衡有詳細(xì)的介紹。服務(wù)名稱為服務(wù)命名,必須為英文或數(shù)字。 本文是數(shù)人云9月22日線上微信群分享的文章實錄。數(shù)人云容器管理面板Crane開源以來,很多小伙伴對它還不是非常了解,數(shù)人云工程師金鑫從Crane技術(shù)背景、環(huán)境準(zhǔn)備和使用步驟等方面為大家做了詳細(xì)的介紹,并整理大家常見的問題逐一進(jìn)行了解答。 引言 Docker1....

    Tangpj 評論0 收藏0
  • Docker Swarm在生產(chǎn)環(huán)境中進(jìn)階指南

    摘要:應(yīng)該如何解決本文將給出若干提示,如何在生產(chǎn)環(huán)境中使用。路由匹配服務(wù)發(fā)現(xiàn)負(fù)載均衡跨容器通訊非??煽?。在單個端口上運行一個服務(wù),節(jié)點的任意主機(jī)都可以訪問,負(fù)載均衡完全在后臺實現(xiàn)。 上周數(shù)人云給大家分享了——《你可能需要的關(guān)于Docker Swarm的經(jīng)驗分享》今天給大家?guī)磉@位作者大大的后續(xù)文章——《Docker Swarm在生產(chǎn)環(huán)境中的進(jìn)階指南》 當(dāng)在本地開發(fā)環(huán)境中使用Docker,或者...

    galaxy_robot 評論0 收藏0
  • SwarmKit知多少——來自源碼世界深入解讀

    摘要:一個容器起來,能夠?qū)ν夥?wù),這時就看下一步的負(fù)載均衡服務(wù)發(fā)現(xiàn)以及編排。它們有不同的應(yīng)用場景,比如傾向于四層的負(fù)載均衡。不單是負(fù)載均衡,它同時解決了服務(wù)發(fā)現(xiàn)和負(fù)載均衡兩個點。 今天是數(shù)人云容器三國演義Meetup嘉賓演講實錄第二彈。數(shù)人云工程師春明為大家奉送了一盤干貨的大餐,讓我們讀讀源碼,深入了解一下SwarmKit的世界吧! 小數(shù)前方預(yù)警:有大量代碼出現(xiàn)! showImg(htt...

    stefanieliang 評論0 收藏0
  • Docker Swarm前世今生

    摘要:當(dāng)然此時的局限性較大,比如沒有副本和負(fù)載均衡的概念,這導(dǎo)致服務(wù)無法高可用當(dāng)然也更不存在什么服務(wù)網(wǎng)絡(luò)管理和跨節(jié)點數(shù)據(jù)存儲這些東西沒有服務(wù)模型集群中服務(wù)間關(guān)系和啟動順序編排也很復(fù)雜于是就有了下面的的誕生。 showImg(https://segmentfault.com/img/remote/1460000015317037?w=1885&h=1153); 概述 在我的《Docker S...

    lemon 評論0 收藏0

發(fā)表評論

0條評論

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