2013-10-09 3 views
3

Мы пытаемся найти лучшие варианты настройки для haproxy для получения и отправки запроса, поступающего от клиента (а не для пользователей, просматривающих веб-тип сделки).Настройка Haproxy для работы?

Запуск теста jmeter с потоками 30k, который состоит из 5 вызовов на серверы, 1 пользовательский рег и несколько вызовов для обновления. Эти push json данные, хотя трубопровод.

Здесь нам наша текущая конфигурация для HAproxy

global 
     log /dev/log local0 #notice 
     maxconn 14000 
     tune.bufsize 128000 
     user netcom 
     group netcom 
     pidfile /tmp/haproxy.pid 
     daemon 
     nbproc 7 
     #debug 
     #quiet 

defaults 
     log global 
     mode http 
     ### Options ### 
     option httplog 
     #option logasap 
     option dontlog-normal 
     #option dontlognull 
     option redispatch 
     option httpchk GET /?method=echo HTTP/1.1 
     option tcp-smart-accept 
     option tcp-smart-connect 
     option http-server-close 
     #option httpclose 
     #option forceclose 
     ### load balance strategy ### 
     balance leastconn 
     #balance roundrobin 
     ### Other ### 
     retries 5 
     maxconn 14000 
     backlog 100000 
     ### Timeouts ### 
     #timeout client   25s 
     timeout client   60s 
     #timeout connect   5s 
     timeout connect   60s 
     #timeout server   25s 
     timeout server   60s 
     timeout tunnel  3600s 
     timeout http-keep-alive 1s 
     #timeout http-request 15s 
     timeout http-request 60s 
     #timeout queue   30s 
     timeout queue   30s 
     timeout tarpit   60s 

listen stats *:1212 
     stats enable 
     stats show-node 
     stats show-desc xxxxProxy 
     stats realm xxxxProxy\ Statistics 
     stats auth xxxx:xxxx 
     stats refresh 5s 
     stats uri/

frontend http-in 
     bind *:1111 
     bind *:2222 ssl crt /home/netcom/nas/haproxy/xxxx.co.pem verify optional 
     acl user_request url_reg method=user.register 
     use_backend user_group if user_request 
     default_backend other_group 

backend user_group 
     server n15 xxxx:8080 maxconn 3500 check port 8097 inter 2000 
     server n2 xxxx:8080 maxconn 3500 check port 8097 inter 2000 
     server n9 xxxx:8080 maxconn 3500 check port 8097 inter 2000 
     server n14 xxxx:8080 maxconn 3500 check port 8097 inter 2000 
     server n22 xxxx:8080 maxconn 3500 check port 8097 inter 2000 
     server n24 xxxx:8080 maxconn 3500 check port 8097 inter 2000 
     server n25 xxxx:8080 maxconn 3500 check port 8097 inter 2000 

и наша Sysctl на CentOS 6

net.ipv4.tcp_syncookies = 1 
net.ipv4.tcp_synack_retries = 2 
net.ipv4.ip_local_port_range = 1024 65535 
net.ipv4.tcp_tw_recycle = 1 
net.core.wmem_max = 12582912 
net.core.rmem_max = 12582912 
net.ipv4.tcp_rmem = 20480 174760 25165824 
net.ipv4.tcp_wmem = 20480 174760 25165824 
net.ipv4.tcp_window_scaling = 1 
net.ipv4.tcp_timestamps = 1 
net.ipv4.tcp_sack = 1 
net.ipv4.tcp_no_metrics_save = 1 
net.core.netdev_max_backlog = 10000 
# Syn flood 
net.ipv4.tcp_max_syn_backlog = 8096 
net.core.somaxconn = 8096 

ли указать какие-либо вопросы, ревущий, что они могут видеть, с верхней части головы. К сожалению, у меня нет опыта в haproxy, поэтому я ищу помощь со стороны сообщества.

То, что я также испытываю, нужно выяснить, как найти максимальные соединения, которые может обрабатывать ящик, его сеть на 1 гигабайт и все бэкэнды находятся на одном концерте. Вот скриншот из haproxy admin http://grab.by/r12c, обратите внимание, что мы запускаем его с несколькими ядрами, так что это снимок одного ядра .. так как веб-админ, насколько я могу судить, не могу показать все .. любая идея, как получить max conn, что haproxy получает от линии cmd?

в любом случае просто работает, хотя и надеется, что каждый может дать несколько советов или указателей.

ответ

3

Ну, во-первых, похоже, что вы не должны запускать несколько процессов haproxy. Как правило, вы не захотите это делать, особенно потому, что вы заняты тестированием и пытаетесь увидеть maxconn. На одном ядре haproxy можно обойтись без настроек maxconn, которые у вас есть.

Я прошел через sysctl Snapt и у вас есть большая часть; Я заметил, что это также добавляет эти -

net.ipv4.tcp_tw_reuse = 1 
    net.ipv4.tcp_fin_timeout = 30 

Кроме того, leastconn не собирается быть полезным, я хотел бы предложить roundrobin. Потому что вы делаете HTTP-трафик, который состоит из множества небольших запросов (я думаю, это зависит, если честно). Это такие незначительные вещи.

Смежные вопросы