Как я могу оптимизировать производительность mysql vm в группе балансировщика нагрузки nginx?
Я создал группу mysql HA с 3 Ubuntu VMS. Один из них - балансировщик нагрузки, а два других - mysql vms. Каждый mysql vm имеет 8 экземпляров mysql, которые соответствуют 8 портам, и на балансировщике нагрузки есть 8 портов, которые соответствуют тем, что есть в mysql vms. Два mysql vms являются репликацией master-master друг к другу. Но когда я тестировал производительность mysql с помощью sysbench, производительность балансировщика нагрузки была довольно низкой, и все нормально, если я тестировал ее в одном из mysql vm.
Я использовал команду sysbench --test=oltp --mysql-host=192.168.1.11 --mysql-port=3307 --mysql-user=xxx --mysql-password=xxx --mysql-db=test1 --num-threads=32 --max-time=1800 --max-requests=0 --oltp-table-size=10000000 run>> /var/tmp/mysql3307.txt
в балансировщик нагрузки и получите результат
Статистика теста OLTP: выполнено запросов: чтение: 3522974, запись: 1258168, другое: 503270, всего: 5284412, транзакций: 251629 (139,78 в секунду), взаимоблокировок: 12 (0,01 в секунду), запросов на чтение / запись: 4781142 (2655,95 в секунду), другое операции: 503270 (279,57 в секунду)
Сводка выполнения теста: общее время: 1800.1653s общее количество событий: 251629 общее время, затраченное на выполнение события: 57596,9970 Статистика по запросу: мин: 42,53 мс, средняя: 228,90 мс, макс: 3086,55 мс прибл. 95 процентиль: 407,86 мс
Справедливость потоков: события (avg/stddev): 7863.4062/381.89 время выполнения (avg/stddev): 1799.9062/0.05
Но когда я тестировал в одном MySQL VM sysbench --test=oltp --mysql-host=127.0.0.1 --mysql-port=3307 --mysql-user=xxx --mysql-password=xxx --mysql-db=test1 --num-threads=32 --max-time=1800 --max-requests=0 --oltp-table-size=10000000 run>> /var/tmp/mysql3307.txt
результат
Статистика теста OLTP: выполнено запросов: чтение: 140070 запись: 50010 другое: 20005 всего: 210085 транзакций: 10000 (317,15 в секунду) взаимоблокировок: 5 (0,16 в секунду) запросов на чтение / запись: 190080 (6028,38 в секунду) другое операции: 20005 (634,46 в секунду)
Сводка выполнения теста: общее время: 31,5308 с общее количество событий: 10000 общее время, затраченное на выполнение события: 1007,3012 статистика по запросу: мин: 13,73 мс, среднее: 100,73 мс, макс: 589,49 мс прибл. 95 процентиль: 184,95 мс
Справедливость потоков: события (avg/stddev): 312.5000/6.02 время выполнения (avg/stddev): 31.4782/0.04
Конфигурация балансировки нагрузки nginx в балансировщике нагрузки
stream { server { listen 3307; proxy_pass db3307; } upstream db3307 { server 192.168.1.11:3307 weight=1; сервер 192.168.1.12:3307 вес =1; } server { listen 3308; proxy_pass db3308; } upstream db3308 { server 192.168.1.11:3308 weight=1; сервер 192.168.1.12:3308 вес =1; } //... в порт 3314 }
Я думаю, что причиной плохой производительности является баланс нагрузки nginx, но я не знаю, как его оптимизировать. Кто-нибудь может мне помочь? Спасибо.