Estou tentando configurar o HAProxy para fazer o balanceamento de carga de um servidor da Web personalizado que criei. Agora estou percebendo um atraso crescente com o HAProxy à medida que o tamanho da mensagem de retorno aumenta. Por exemplo, eu fiz quatro testes diferentes, aqui estão os resultados:
Resposta de 15kb a HAProxy:
Média tempo de resposta: .34 segs
Taxa de transmissão: 763 trans / sec
Taxa de transferência: 11,08 MB / s
Resposta 2kb por meio do HAProxy:
Média tempo de resposta: .08 segs
Taxa de transação: 1171 trans / sec
Taxa de transferência: 2,51 MB / s
Resposta de 15kb diretamente ao servidor:
Média tempo de resposta: 0,11 seg
Taxa de transação: 1046 trans / sec
taxa de transferência: 15,20 MB / s
Resposta 2kb diretamente ao servidor:
Média Tempo de resposta: .05 segs
Taxa de transação: 1158 trans / sec
Taxa de transferência: 2,48 MB / s
Todas as transações são solicitações HTTP. Como você pode ver, parece haver uma diferença muito maior entre os tempos de resposta para quando a resposta é maior do que quando ela é menor. Eu entendo que haverá um pequeno atraso ao usar o HAProxy. Não tenho certeza se é importante, mas o teste em si foi executado usando cerco. E durante o teste havia apenas um servidor atrás do HAProxy (o mesmo que foi usado nos testes diretos para o servidor). Aqui está o meu arquivo haproxy.config:
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 10000
user haproxy
group haproxy
daemon
#debug
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
option httpclose
maxconn 10000
contimeout 10000
clitimeout 50000
srvtimeout 50000
balance roundrobin
stats enable
stats uri /stats
listen lb1 10.1.10.26:80
maxconn 10000
server app1 10.1.10.200:8080 maxconn 5000
Não consegui encontrar muito em termos de opções neste arquivo que ajudaria no meu problema. Ouvi sugestões de que talvez precise ajustar algumas das minhas configurações de sysctl. Eu não pude encontrar muita informação sobre isso no entanto, a maioria da documentação é para o Linux 2.4 e 2.6 no material sysctl, eu estou executando 3.2 (Ubuntu server 12.04), que parece auto tuning, então eu não tenho idéia do que eu deveria ou não deveria estar mudando. A maioria das alterações de configurações que eu tentei não teve nenhum efeito ou efeito negativo no desempenho.
Apenas um aviso, este é um teste muito preliminar, e minha esperança é que, no momento da implantação, meu HAProxy consiga equilibrar 10k a 20k solicitações / seg. para muitos servidores, portanto, se alguém puder fornecer informações para me ajudar a alcançar esse objetivo, seria muito apreciado.
Muito obrigado por qualquer informação que você possa fornecer. E se você precisar de mais informações de mim, por favor me avise, eu vou te dar tudo o que puder.
[Editar] Como solicitado haproxy -vv
HA-Proxy version 1.4.18 2011/09/16
Copyright 2000-2011 Willy Tarreau <[email protected]>
Build options :
TARGET = linux26
CPU = generic
CC = gcc
CFLAGS = -O2 -g -fno-strict-aliasing
OPTIONS = USE_LINUX_SPLICE=1 USE_LINUX_TPROXY=1 USE_PCRE=1
Default settings :
maxconn = 2000, bufsize = 16384, maxrewrite = 8192, maxpollevents = 200
Encrypted password support via crypt(3): yes
Available polling systems :
sepoll : pref=400, test result OK
epoll : pref=300, test result OK
poll : pref=200, test result OK
select : pref=150, test result OK
Total: 4 (4 usable), will use sepoll.