1. 程式人生 > 實用技巧 >網路問題,導致 連線 容器 mysql 異常

網路問題,導致 連線 容器 mysql 異常

背景

今天介面新增引數,想debug下,執行直接,500異常,發現是 mysql導致。

[2020-08-11 10:52:10,428] [ERROR] [1Sbq2ZvQpY4w534jNldTJI40ht0Dh42U] com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
	at com.mysql.jdbc.Util.getInstance(Util.java:408) 
  
 

心想,昨天斷電 難道mysql還沒恢復,但昨天看沒已經恢復了啊, 難道 埠改了? 確認了也沒有改,並且 在容器中能登入成功。 想哪裡出問題了,外部連線被阻塞了?

嘗試1

同事吧 容器 mysql 例項換了 port 試了下,還是 相同的 異常。

嘗試2

​ 新建一個mysql例項,ip和port都不變

​ 用客戶端連線 mysql 也是 不行(以前也出現過一下,是 連線慢導致的),這次用 命令列 登入 mysql 也是 ERROR 2003 (HY000): Can't connect to MySQL server on '172.16.0.11' (60) ,懷疑 ip 是否有問題,

ping ip

 bin % ping 172.16.0.11
PING 172.16.0.11 (172.16.0.11): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3

想到了 網路問題, 一看 連線的 wife, 果然不是公司的網,是 寫字樓的網(昨天公司網段了。臨時用了 寫字樓的網)

使用 公司網路後,ping

bin % ping 172.16.0.11
PING 172.16.0.11 (172.16.0.11): 56 data bytes
64 bytes from 172.16.0.11: icmp_seq=0 ttl=62 time=11.351 ms
64 bytes from 172.16.0.11: icmp_seq=1 ttl=62 time=9.392 ms
64 bytes from 172.16.0.11: icmp_seq=2 ttl=62 time=9.150 ms

連通, mysql 客戶端也連通,執行 請求,返回都正常了。。

​ 網路連了 寫字樓的 網路。。坑啊!!! 一開始真的沒有想到。 短短几天就碰到了 2次網路的問題。

總結

1、容器 暴露對外的都是 內網的ip,並非公網, 連線時 需要 注意使用的 網路環境

2、網路知識需要多補充補充。 多用ping ip. telnet ip port. traceroute ip 這些基礎命令進行排查

3、靈活的結合理論的知識,採用各種手段進行 問題排查, 如果 連線不同,可以結合 OSI七層模型先 看ip是否能連上, 然後 telnet 看 port是否有問題 ...