首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 連線緩慢解決:skip-name-resolve 禁用 DNS 反向解析

     編輯:MySQL 資料庫相關知識

現象

Linux 伺服器安裝 MySQL 5 後,本地客戶端連線極慢,應用程式連線同樣緩慢。

根因

預設安裝啟用 DNS 反向解析:新連線執行緒會對客戶端 IP 執行 gethostbyaddr_r()/gethostbyname_r() 解析主機名,用於權限表匹配。DNS 回應慢即導致連線阻塞。

解決方法

編輯 my.cnf,在 [mysqld] 區段新增:

[mysqld]
skip-name-resolve

重啟 MySQL 生效。

副作用與應對

  • 權限表 mysql.user 的 Host 欄不再支援主機名,僅能使用 IP 地址或 %
  • 本地連線需用 127.0.0.1 替代 localhost
  • 應用程式連線字串、授權帳號同步調整

官方機制說明

When a new thread connects to mysqld... thread will call gethostbyaddr_r() and gethostbyname_r() to resolve the hostname... You can disable DNS host lookup by starting mysqld with --skip-name-resolve. In this case you can however only use IP names in the MySQL privilege tables.

替代優化(不禁用反解)

  • 增大 HOST_CACHE_SIZE(預設 128,需重新編譯)
  • 使用 --skip-host-cache 禁用主機名快取,定期 FLUSH HOSTS
  • /etc/hosts 新增映射:192.168.1.21 N-21,避免 DNS 查詢

驗證

time mysql -h 127.0.0.1 -u root -p -e "SELECT 1;"
# 應從「數秒~數十秒」降至「幾毫秒」

一行配置解決 MySQL 連線緩慢,建議納入標準化部署清單。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved