链接mysql慢或者多台服务器ping不通mysql

异常:“OperationalError:(1042,”没法获取您的地址的主机名“)mysql

  或者 多主机,dns慢,有的ping不通mysql,有的链接慢sql

  或者 重启某些服务,忽然起来不来,mysql链接超时缓存

分析:有防火墙?关闭 systemctl stop firewalld 没啥用,再看看安全

处理:在mysql配置文件 /etc/mysql/my.cnf 添加服务器

skip-host-cache
skip-name-resolve

缘由: 性能

当新的客户链接mysqld时,mysqld建立一个新的线程来处理请求。该线程先检查是否主机名在主机名缓存中。若是不在,线程试图解析主机名:

·         若是操做系统支持线程安全gethostbyaddr_r ()和gethostbyname_r()调用,线程使用它们来执行主机名解析。

·         若是操做系统不支持线程安全调用,线程锁定一个互斥体并调用gethostbyaddr()和gethostbyname()。在这种状况下,在第1个线程解锁互斥体前,没有其它线程能够解析不在主机名缓存中的主机名。

   重启某些服务后,缓存不匹配,致使链接不上spa

    一、 能够用--skip-name-resolve选项启动mysqld来禁用DNS主机名查找。然而,在这种状况下,你只可使用MySQL中的受权表中的IP号。操作系统

    二、若是你有一个很慢的DNS和许多主机,你能够经过用--skip-name-resolve禁用DNS查找或增长HOST_CACHE_SIZE定义(默认值:128)并从新编译mysqld来提升性能。线程

    三、能够用--skip-host-cache选项启动服务器来禁用主机名缓存。要想清除主机名缓存,执行FLUSH HOSTS语句或执行mysqladmin flush-hosts命令。code

    四、若是你想要彻底禁止TCP/IP链接,用--skip-networking选项启动mysqld。

相关文章
相关标签/搜索