记一次数据库连接问题-创新互联

最近做项目的时候发现一个问题,网站打开的时候,一停的在转,大概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
端口起来啦

页面访问也正常了!!!

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前名称:记一次数据库连接问题-创新互联
分享地址:http://scyanting.com/article/ddjdds.html