zoukankan      html  css  js  c++  java
  • 内网其他服务器节点连接Mysql数据库很慢的解决方案

    一、概述

      使用jdbc方式对数据进行同步时,由于设置了数据库登录超时时间是10s,结果发现有的服务器节点可以连接,有的服务器节点不能连接Mysql数据库。排查了好长原因,最后,自己写了一个jdbc的测试程序,发现正常节点连接只需要200ms左右,而其他节点却需要10400ms,而我们由于设置的10s超时时间,因此排除了网路后,终于找到原因了。

    二、原因和解决方案

    1、连接Mysql数据库很慢的原因

      MySQL数据库对连接的客户端进行DNS反向解析。所谓反向解析是这样的:MySQL接受到连接请求后,获取的是客户端的ip,为了更好的匹配MySQL.user里的权限记录(某些是用hostname定义的)。

     如果MySQL数据库设置了DNS服务器,并且客户端ip在DNS上并没有相应的hostname,那么这个过程很慢,导致连接等待。添加skip-name-resolve以后就跳过这一个过程了。

    2、解决方案

     a、可以通过修改MySQL的配置文件实现

       Linux下是my.cnf文件,windows下是my.ini文件,在配置文件[mysqld]下新增如下一行代码:

        skip-name-resolve

       然后重启MySQL服务,再次连接发现已是秒连了。这个方案的不足之处就是,以后在使用grant对用户进行授权时只能使用IP格式,而不能使用主机名称了

    b、通过修改系统hosts文件也可以实现

     举例来说,我想解决192.168.1.100远程连接MySQL服务器缓慢的问题,只需要在MySQL库所在服务器的hosts文件中新增一条记录如下:

      192.168.86.100 test.com

     保存退出,再次远程连接该MySQL库,同样很快。之所以说绝,是因为这样设置,你添加记录的192.168.86.100远程连接速度变快了,其他主机连接速度跟之前一样慢。该方法同样可以解决ssh远程连接某主机响应很慢的问题,原理一样。

     
  • 相关阅读:
    java三层架构:持久层、业务层、表现层
    Spring:Spring JDBCTemplate & 声明式事务
    Spring:AOP
    Spring:IOC控制反转
    Mybatis: 加载策略及注解开发
    Mybatis 配置文件深入
    Mybatis:基本应用
    前后端项目接口联调
    springboot整合jsp
    IDEA出现URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)
  • 原文地址:https://www.cnblogs.com/chhyan-dream/p/12355982.html
Copyright © 2011-2022 走看看