我正在使用 Tsung 对 ejabberd 进行压力测试。我的 EC2 实例设置如下:
- Tsung:c3.xlarge
- ejabberd : c3.2xlarge
- HAProxy : t1.mirco
当我让 Tsung 直接与 ejabberd 实例通信时,我很容易在 5 分钟内获得我想要的 35K+ 个连接。当我在它们之间放置 HAProxy 时,我获得的最大连接数约为 10K。没有 HAProxy 错误日志,CPU 运行 9%,HAProxy 实例上的内存使用率为 18%。实例上的 ulimit 设置正确。这里可能明显遗漏了什么吗?欢迎提出任何建议。
我的 HAProxy 配置如下:
global
log 127.0.0.1 local1 notice
log 127.0.0.1 local0 notice
maxconn 512000
user haproxy
group haproxy
defaults
log global
mode tcp
option tcplog
option dontlognull
retries 3
option redispatch
#timeout connect 5000
#timeout client 10000
#timeout server 10000
timeout connect 5s
timeout client 24h
timeout server 24h
listen stats :80
mode http
stats enable
stats uri /haproxy?stats
stats realm Strictly\ Private
stats auth xx:xx
listen ejabberd_proxy :5222
maxconn 512000
mode tcp
retries 2
option redispatch
option tcplog
option tcpka
option clitcpka
option srvtcpka
balance leastconn
server ejabberd1 ip_1:5222 check fall 10
server ejabberd2 ip_2:5222 check fall 10
答案1
尝试为您的 haproxy 节点使用更大的实例大小。t1.micro 实例具有可怕网络和 I/O 性能,如果是其中一个导致了问题,我不会感到惊讶。