Mysql 大量 unauthenticated user

回覆文章
yehlu
Site Admin
文章: 3245
註冊時間: 2004-04-15 17:20:21
來自: CodeCharge Support Engineer

Mysql 大量 unauthenticated user

文章 yehlu »

http://leftleg.hzpub.com/read.php?289

近日在資料庫方面,發現異常的連線狀況
該狀況在 mysql 下指令 Show Processlist; 可以看到問題
該問題如下;

: 3436942 : unauthenticated user : 192.168.0.52:49607 : : Connect : : login :
: 3436943 : unauthenticated user : 192.168.0.52:49608 : : Connect : : login :

會有非常多的 unauthenticated user 嘗試做登入使用 mysql 的情況
當這情況在無限制的發生時,就會照成系統的停頓

在經過多方測試,以及詢問官方原廠的回應下
發現這屬於官方一個系統上的特殊設定,亦可稱呼他為 mysql 的 bug
不管連結的的方式是經過 hosts 或是 IP 的模式,他都會對 DNS 做反查
mysqld 會嘗試去反查 IP -> dns ,由於反查解析過慢,無法應付快速多量的查詢
反查是上層 ISP 所掌控,並不是我們可以解決及要求的

在知道問題的癥結點後,要解決這個問題就有相對應的方法
其方法分為兩個步驟,第一是開啟 Mysqld 的時候加入特定的參數啟動
第二就是修改 mysql 的連線設定等,如下所示

啟動參數; with --skip-name-resolve =>這樣就可以關閉反查動作

更改 my.cnf;加強以下設定
[mysqld]
datadir=/services/mysql/
socket=/tmp/mysql.sock
port=3306
set-variable = key_buffer_size=64M
set-variable = max_connections=1024
set-variable = interactive_timeout=30
set-variable = wait_timeout=30
set-variable = join_buffer_size=10M
set-variable = long_query_time=20
set-variable = table_cache=256
set-variable = sort_buffer=4M
set-variable = record_buffer=1M
set-variable = back_log=500

[mysqld.server]
user=mysql
basedir=/usr/local

經過以上的設定及重新啟動過後,直到現在還沒有看到一個 unauthenticated user 的情況發生
近日還是會持續的觀察 Mysql 的運作情況,如有問題將會持續的稟報及解決
相关日志
xbaydns
mysql-master-master
MySQL的性能优化
MySQL可靠性方案分析与比较
利用web应用中的不均衡性重构你的技术细节
schumi
Site Admin
文章: 696
註冊時間: 2004-04-15 14:30:34

文章 schumi »

直接把 skip-name-resolve 加在 my.cnf 也可以

加在 skip-external-locking 下面就好
回覆文章

回到「MySQL」