您好,登錄后才能下訂單哦!
最近做項目的時候發現一個問題,網站打開的時候,一停的在轉,大概5分鐘以后返回504網關超時
當時第一反應是我的網絡架構出問題了,于是從前端LVS一直往下查,我的架構是LVS+NGINX+TOMCAT,一直到nginx這塊都沒問題,從nginx的錯誤日志也看不出什么,同樣的報504網關超時,當時就在想502壞的網關是以為nginx把請求拋給tomcat的時候找不到tomcat的端口,504會不會也一樣呢?
[root@web1 ~]# netstat -lntup|grep 800
tcp 0 0 :::8000 :::* LISTEN 4208/java
tcp 0 0 :::8002 :::* LISTEN 4208/java
沒看出什么問題,再與線上服務器對比的時候找到問題
[root@web1 ~]# netstat -lntup|grep 800
tcp 0 0 :::8000 :::* LISTEN 4208/java
tcp 0 0 ::ffff:127.0.0.1:8001 :::* LISTEN 4208/java
tcp 0 0 :::8002 :::* LISTEN 4208/java
發現tomcat少了一個端口,為什么沒會導致這個問題呢?
查看tomcat日志,發現tomcat沒起來,一直卡在連接連接數據庫那塊
于是我在web端查看mysql端口,發現能通
[root@web2 server]# telnet 10.10.0.126 3306
Trying 10.10.0.126...
Connected to 10.10.0.126.
Escape character is '^]'.
^]
telnet> \q
Connection closed.
到這里發現自己的思路斷了!!
峰回路轉,無意中在db2上查看了一下mysql端口,發現和在web上的結果不一樣
[root@db2 root]# telnet 10.10.0.126 3306
Trying 10.10.0.126...
Connected to 10.10.0.126.
Escape character is '^]'.
N
5.5.32-log0pKhJw=db!>MIgIxAwW,s"mysql_native_password
這是為什么呢?
于是一點點的回憶,思考web和db的區別,最后終于找到問題所在
10.10.0.126和10.10.0.127是我數據的讀vip和寫vip,只有這兩臺機器才有10.10.0.0網段的ip
web上只有一個外網ip,于是route -n查看了一下web和db的網關
[root@web1 server]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
202.192.168.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth2
0.0.0.0 202.192.168.1 0.0.0.0 UG 0 0 0 eth2
[root@db2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
202.192.168.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.10.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
0.0.0.0 202.192.168.1 0.0.0.0 UG 0 0 0 eth0
很明顯,web上缺少10.10.0.0的網關
于是在web端添加了一個網關
route add -net 10.10.0.0 netmask 255.255.255.0 dev eth2
再查看一下
[root@web1 server]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
202.192.168.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
10.10.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth2
0.0.0.0 202.192.168.1 0.0.0.0 UG 0 0 0 eth2
已經和db端一樣了
查看一下mysql端口
[root@web1 server]# telnet 10.10.0.126 3306
Trying 10.10.0.126...
Connected to 10.10.0.126.
Escape character is '^]'.
N
5.5.32-log±vj3[SkES!Q{9H=9E0]fjamysql_native_password
成功啦!!!!!
重啟tomcat,查看tomcat端口
[root@web1 server]# netstat -lntup|grep 800
tcp 0 0 :::8000 :::* LISTEN 4208/java
tcp 0 0 ::ffff:127.0.0.1:8001 :::* LISTEN 4208/java
tcp 0 0 :::8002 :::* LISTEN 4208/java
端口起來啦
頁面訪問也正常了!!!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。