TOMCAT JDBC连接不上MYSQL的常用诊断

下面对常见的情况进行分析:


1、web和数据库操作系统是否有问题

       web端系统日志报错:ip_conntrack: table full, dropping packet

       该报错说明web服务器有掉包情况,需要更改配置

        # vim /etc/sysctl.conf  添加如下行
              net.ipv4.netfilter.ip_conntrack_max = 655350
              net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1200
         有些系统是添加如下2行
              net.nf_conntrack_max = 524688
              net.netfilter.nf_conntrack_tcp_timeout_established = 1200
        # sysctl -p
        上面状态跟踪表的最大行数(nf_conntrack_max)最大值计算方式如下:
        CONNTRACK_MAX = RAMSIZE (in bytes) / 16384 / (ARCH / 32)
        因此内存为32G的64位系统的状态跟踪表的最大行数理论值为:
        CONNTRACK_MAX = 32*1024*1024*1024/16384/2 = 1048576
        #  echo "163840" > /sys/module/nf_conntrack/parameters/hashsize  
        哈希表大小通常为总表的1/8,最大为1/2:CONNTRACK_BUCKETS = CONNTRACK_MAX / 8       


2、是否能telnet连通mysql ip+port,防火墙问题iptables

      查看MYSQL服务器端是否限制了3306端口的访问。


3、账号和权限是否正确 

      mysql账号由username@ip组成,如果仅仅username相同,而web的IP不在@ip范围内,是无法连接上MYSQL的


4、连接数是否超过最大限制

      报错:Too many connections error

      设置max_connections为更大的值或查看JDBC是否配置了连接池


5、登陆失败数达到最大值max_connect_err/FLUSH HOSTS;

      当有用户连接MYSQL密码一直错误,超过max_connect_errors=1000会报错:ERROR 1129 (00000): Host ‘gateway’ is blocked because of many con

      执行mysqladmin -u username -p flush-hosts即可。


6、mysql端口是否被其它程序占用

      有时候会存在MYSQL端口被占用的情况, 请在脑海中注意这点,在所有判断都错误的时候,也行就是这个问题导致的。

你可能感兴趣的:(mysql故障处理)