Skip to content

Latest commit

 

History

History
86 lines (59 loc) · 4.09 KB

02_web02.md

File metadata and controls

86 lines (59 loc) · 4.09 KB

Тестирование web - HA-кластер web с http-балансировкой

Тесты были направлены на VIP-адрес http-балансировщиков, соответственно, трафик распределялся на два уже оптимизированных web-сервера. Так как интенсивность запросов к БД возрастёт, то очевидно, что в результатах тестов узким местом будет являться БД, коим она и являлась на предыдущем этапе.

Web-сервера имеют 1 ядро ЦП и 2 ГБ ОЗУ. Сервера БД - 2 ядра ЦП и 3 ГБ ОЗУ.

Конфигурация БД - по-умолчанию.

Тесты

оптимизированный web + http-балансировка

yandex.tank > haproxy > 2 x web > haproxy > postgresql

https://overload.yandex.net/221060

и нагрузка на ВМ

02_web02_1.png

Из графиков видно, что, как и предполагалось, производительность стенда упёрлась в БД. В частности, iowait на сервере БД достигает 33,9% и количество возможных подключений к БД достигло максимального значения для текущей конфигурации БД, что подтверждается логами:

[root@hl-pg01 log]# tail -f -n 3 postgresql-Mon.log
2019-10-21 17:45:03.162 MSK [27963] ВАЖНО:  оставшиеся слоты подключений зарезервированы для подключений суперпользователя (не для репликации)
2019-10-21 17:45:03.177 MSK [27964] ВАЖНО:  оставшиеся слоты подключений зарезервированы для подключений суперпользователя (не для репликации)
2019-10-21 17:45:03.195 MSK [27965] ВАЖНО:  оставшиеся слоты подключений зарезервированы для подключений суперпользователя (не для репликации)

оптимизированный web + http-балансировка + pgbouncer

настройки пула в pgbouncer

zabbix = host=hl-pg01.otus port=5432 pool_size=100
pool_mode = transaction

yandex.tank > haproxy > 2 x web > pgbouncer > postgresql

https://overload.yandex.net/221490

Проводились два теста через небольшой промежуток времени, поэтому графики выглядят так:

02_web02_2.png

оптимизированный web + http-балансировка + первичная настройка postgresql

(без pgbouncer)

Конфигурация postgresql (нажать, чтобы открыть)

# DB Version: 11
# OS Type: linux
# DB Type: dw
# Total Memory (RAM): 4 GB
# CPUs num: 2
# Connections num: 200
# Data Storage: hdd

max_connections = 200
shared_buffers = 1GB
effective_cache_size = 3GB
maintenance_work_mem = 512MB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 500
random_page_cost = 4
effective_io_concurrency = 2
work_mem = 2621kB
min_wal_size = 4GB
max_wal_size = 8GB
max_worker_processes = 2
max_parallel_workers_per_gather = 1
max_parallel_workers = 2

https://overload.yandex.net/222008

ВЫВОД

В первую очередь необходима тонкая настройка БД. Очевидно, что на данном этапе менеджер пула соединений pgbouncer не приносит сколько-нибудь значимой пользы, т.к. продолжает удерживать коннекты к БД дольше, чем сама БД.