MySQL遠端訪問速度緩慢的解決和分析

2021-08-01 06:47:50 字數 1951 閱讀 3255

環境介紹:

os:rhel5.4

mysql:5.5.10

異常情景:

資料庫一直處於機房內網中訪問和使用,一天乙個國外節點需要訪問資料庫,開通訪問許可權後,他們反饋很慢;

隨即在防火牆上,開通自己公司ip進行訪問,也有類似問題!

開始排錯原因:

1.檢查網路是否穩定?得到答案,ping ttl值很穩定,ssh也正常;

2.檢查mysql執行狀態,無異常發現;

3.突然想起了,mysql利用dns做解析的引數有可能在規劃時,沒有做設定!!!

解決辦法:

1.驗證引數

mysql

> show variables like 'skip_%';

+-----------------------+-------+

| variable_name | value |

+-----------------------+-------+

| skip_external_locking | on |

| skip_name_resolve | off |

| skip_networking | off |

| skip_show_database | off |

+-----------------------+-------+

4 rows in set (0.00 sec)

mysql> show variables like 'skip_%';

2.停庫,修改my.cnf裡面引數

[mysqld]

skip_name_resolve

3.重啟資料庫後驗證:

mysql> show variables like 'skip_%';

+-----------------------+-------+

| variable_name | value |

+-----------------------+-------+

| skip_external_locking | on |

| skip_name_resolve | on |

| skip_networking | off |

| skip_show_database | off |

+-----------------------+-------+

4 rows in set (0.03 sec)

該選項用於禁用dns解析,連線速度會快很多。不過,這樣就不能在mysql的授權表中使用主機名而只能用ip位址。

mysql利用dns做解析解釋:

當 mysql 客戶端連線 mysql 伺服器 (程序為:mysqld),mysqld 會建立乙個新的執行緒來處理該請求。該執行緒先檢查是否主機名在主機名快取中。如果不在,執行緒試**析主機名。

如果系統是執行緒安全的,則 gethostbyaddr_r () 和 gethostbyname_r() 被呼叫,來執行主機名解析;

如果系統不支援執行緒安全呼叫,則執行緒會鎖定乙個互斥體並呼叫 gethostbyaddr() 和 gethostbyname() 。在這種情況下,在第1個執行緒解鎖互斥體前,沒有其它執行緒可以解析不在主機名快取中的主機名。

通過 --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 命令。

如果要完全禁止 tcp/ip 連線,用 --skip-networking 選項啟動 mysqld 。 

MySQL遠端訪問速度緩慢的解決和分析

環境介紹 os rhel5.4 mysql 5.5.10 異常情景 資料庫一直處於機房內網中訪問和使用,一天乙個國外節點需要訪問資料庫,開通訪問許可權後,他們反饋很慢 隨即在防火牆上,開通自己公司ip進行訪問,也有類似問題!開始排錯原因 1.檢查網路是否穩定?得到答案,ping ttl值很穩定,ss...

MYSQL遠端訪問速度緩慢的解決和分析

問題發生的場景 mysql安裝在linux下,本地和遠端都有應用訪問mysql,本地訪問mysql很流暢,但是遠端訪問非常之緩慢,基本上到了幾分鐘才響應的地步。ssh連線穩定,ping了下發現無丟包,排除網路問題。那麼可能就是mysql的設定問題了。查閱資料發現可以這麼配置 mysqld skip ...

mysql遠端連線緩慢

最近專案使用到mysql,在linux上安裝rpm格式的mysql,前幾天訪問正常,但今天突然發現資料庫訪問緩慢,在網上搜尋過後,發現可以在 etc my.cnf檔案中新增 skip name resolve 來解決。但我在 etc目錄下無法找到my.cnf檔案,再經過搜尋,發現解決方案 用rpm包...