Я запускаю балансировщик нагрузки haproxy перед двумя серверами приложений, которые обслуживают изображения. Проблема в том, что использование одного или двух серверов не влияет на производительность (см. Добавленные изображения). Я использую Digital Ocean в качестве провайдера Vps. Vps работают под управлением nginx, а
Нагрузка с двух серверов:
нагрузка с 1 сервера:
Конфигурация Haproxy выглядит так:
global
log 127.0.0.1 local0 notice
maxconn 10000
user haproxy
group haproxy
chroot /var/lib/haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
contimeout 5000
clitimeout 50000
srvtimeout 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend www
bind 12.34.56.789:80
option http-server-close
default_backend web-backend
backend web-backend
balance roundrobin
server web-1 12.34.56.789:80 check
server web-2 12.34.56.789:80 check
Добавление дополнительных серверов за балансировщиком нагрузки не поможет, если вашему приложению требуется слишком много времени для отправки ответа.
Балансировщик нагрузки не улучшит ваше время отклика, потому что ему нужно дождаться ответа от сервера приложений, чтобы обслуживать клиента, в это время соединение остается установленным и ждет.
Максимальное время ответа составляет около 70 секунд, а время ожидания 17000 запросов истекло (это не очень хорошо). Это проблема приложения.
Также убедитесь, что ваша база данных может обрабатывать такое количество подключений.
More application servers = more database connections
.