鏈接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。

相關文章
相關標籤/搜索