Mysql

HAProxy 的 MySQL 連接氾濫

  • June 24, 2014

我設置了 2 個 HAProxy 伺服器,使用 KeepAlived 程序進行故障轉移,每個 HAProxy 都配置為負載平衡 mysql 連接到我的 MariaDB Galera 集群的 3 個節點。我正在嘗試對我的環境進行負載測試,甚至在將流量推送到我的一個節點之前,我正在查看 netstat -an | grep 3306,這是我在第一個節點上看到的:

ubuntu@mariadb1:~$ netstat -an |grep 3306
tcp    0      0 0.0.0.0:3306           0.0.0.0:*               LISTEN
tcp    0      0 10.60.61.21:3306       10.60.61.19:44563       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.19:44521       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.19:44536       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58622       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58637       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58649       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.19:44533       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.19:44557       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58616       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58628       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58619       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58646       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58625       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58631       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.19:44551       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58652       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.19:44524       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58658       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.19:44545       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58655       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58640       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58634       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.19:44539       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.19:44554       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.19:44527       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58661       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.19:44518       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.19:44548       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.19:44560       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.19:44530       TIME_WAIT
tcp    0      0 10.60.61.21:3306       10.60.61.20:58643       TIME_WAIT

我想知道為什麼 HAProxy 在我還沒有產生任何流量之前就填滿了 3306 上的連接。我原以為主 HAProxy 必須至少執行一個連接才能通過流量,但不能同時通過兩個 HAProxy,也不能有這麼多並發連接。請讓我知道我需要尋找什麼來調整它,或者只是接受這是 HA 設置的正常行為。

這是我的 mariaDB 機器上的規範:

Ubuntu 12.04 8GB RAM 4 vCPU(每個節點都在 VMware 中執行)

如果您需要 /etc/mysql/my.cnf 文件,請告訴我,或 /etc/haproxy/haproxy.cnf 文件。對不起,如果我的文章看起來格式很糟糕,不知道如何讓這個看起來像你們其他人一樣乾淨整潔。

Haproxy 會執行“心跳”以確保服務實際上已啟動。這些可能非常頻繁,應該確保快速故障轉移。

所有這些連接都處於一種TIME_WAIT狀態,因此它們已經關閉並等待作業系統清理。他們沒什麼好擔心的。

引用自:https://serverfault.com/questions/607561