rm 了一下就糟了。
最后,注意 mysql_variables 里的 monitor_username 和 monitor_password,它設置了監(jiān)控用戶的相關信息,以便 ProxySQL 隨時掌握后端 MySQL 服務器的狀態(tài),一定要記得提前在后端 MySQL 服務器上創(chuàng)建相應的帳號,我一開始就沒創(chuàng)建監(jiān)控帳號,結果 ProxySQL 運行一段時間就沒響應了,這是因為當 ProxySQL 不斷用配置里的監(jiān)控帳號和密碼嘗試去訪問后端服務器的時候,會生成很多「Access denied
for user ‘monitor’@’…’」的錯誤,當達到一定閾值,就會導致「Host ‘…’ is blocked because of many connection errors」,此時 ProxySQL 就無法響應請求了,必須在 MySQL 上「mysqladmin flush-hosts」才行。相關的日志信息可以在「SELECT * FROM monitor.mysql_server_ping_log」里查看到。
下面讓我們壓測看看性能怎么樣,測試腳本 test.php 如下:
<?php
$host = '...';
$user = '...';
$password = '...';
$database = '...';
$charset = 'utf8mb4';
$socket = '/var/run/proxysql.sock';
$dsn = "mysql:dbname={$database};charset={$charset}";
if (empty($_GET['proxysql'])) {
$dsn .= ";host={$host}";
} else {
$dsn .= ';unix_socket={$socket}';
}
$dbh = new PDO($dsn, $user, $password);
$sql = 'SELECT * FROM foo LIMIT 10';
$value = $dbh->query($sql);
foreach ($value as $v) {
var_dump($v);
}
?>
通過 ab 模擬一個高并發(fā)的場景,壓測看看性能有沒有提升:
shell> ab -k -n 10000 -c 100 "http://path/test.php?proxysql=0" shell> ab -k -n 10000 -c 100 "http://path/test.php?proxysql=1"
最終,我在一臺一般配置的服務器上,不通過 ProxySQL 得到了大約 1500 的 RPS,通過 ProxySQL 得到了大約 2000 的 RPS,也就是說,ProxySQL 帶來了 25% %u7684性能提升。
想了解更多相關文章,敬請關注php mysql欄目!
更多關于云服務器,域名注冊,虛擬主機的問題,請訪問西部數(shù)碼官網(wǎng):m.ps-sw.cn