2011-01-28 3 views
5

Я пытаюсь HAProxy для балансировки нагрузки TCP. Соединения входят в порт X на одном IP-адресе, а затем HAProxy балансирует эти соединения с фоновым контентом, используя метод балансировки «lessconn», чтобы поддерживать равномерное количество соединений. Это на Ubuntu 10.04 x64.Счет сеанса HAProxy TCP останавливается на 400

Я установил файл-max в конфигурацию ядра до 700 000. Я обнаружил, что каждый процесс составляет около 400 000. Я включил maxconn в конфигурацию haproxy до 200 000. В нем сообщается о том, что этот максимальный предел максимальный:

show info 
Name: HAProxy 
Version: 1.3.22 
Release_date: 2009/10/14 
Nbproc: 1 
Process_num: 1 
Pid: 1355 
Uptime: 0d 4h38m46s 
Uptime_sec: 16726 
Memmax_MB: 0 
Ulimit-n: 400013 
Maxsock: 400013 
Maxconn: 200000 
Maxpipes: 0 
CurrConns: 1113 
PipesUsed: 0 
PipesFree: 0 
Tasks: 1113 
Run_queue: 1 
node: XXXXX 

Эта балансировка нагрузки на передней панели по 5 внутренним системам. Однако, когда он достигает 400 сеансов на внутренний сервер, он просто останавливает балансировку и просто откладывает дополнительные подключения. Я вижу это со статусом «smax». Вы заметите, что максимальное количество сеансов на каждый 400, а общее максимальное количество сессий 2000:

show stat 
# 
pxname,svname,qcur,qmax,scur,smax,slim,stot,bin,bout,dreq,dresp,ereq,econ,eresp,wretr,wredis,status,weight,act,bck,chkfail,chkdown,lastchg,downtime,qlimit,pid,iid,sid,throttle,lbtot,tracked,type,rate,rate_lim,rate_max, 
protoa,FRONTEND,,,958,2000,2000,12624,6230219,6445523,0,0,0,,,,,OPEN,,,,,,,,,1,1,0,,,,0,0,0,406, 
protoa,XXX1672,0,0,191,400,,3222,1249403,1286659,,0,,221,0,664,0,no check,1,1,0,,,,,,1,1,1,,2559,,2,0,,198, 
protoa,XXX1674,0,0,192,400,,3106,1242103,1289247,,0,,178,0,535,0,no check,1,1,0,,,,,,1,1,2,,2572,,2,0,,171, 
protoa,XXX1707,0,0,193,400,,3043,1266305,1305311,,0,,164,0,492,0,no check,1,1,0,,,,,,1,1,3,,2551,,2,0,,161, 
protoa,XXX1782,0,0,189,400,,3046,1236790,1282690,,0,,204,0,619,0,no check,1,1,0,,,,,,1,1,4,,2429,,2,0,,190, 
protoa,XXX1851,0,0,193,400,,3060,1235618,1281616,,0,,189,0,570,0,no check,1,1,0,,,,,,1,1,5,,2490,,2,0,,180, 
protoa,BACKEND,0,0,958,2000,2000,12624,6230219,6445523,0,0,,956,0,2880,0,UP,5,5,0,,0,17645,0,,1,1,0,,12601,,1,0,,406, 
protob,FRONTEND,,,4,6,2000,28,15204,15726,0,0,0,,,,,OPEN,,,,,,,,,1,2,0,,,,0,0,0,2, 
protob,XXX1672,0,0,2,2,,5,2313,2322,,0,,0,0,0,0,no check,1,1,0,,,,,,1,2,1,,5,,2,0,,1, 
protob,XXX1674,0,0,0,2,,5,3520,3803,,0,,0,0,0,0,no check,1,1,0,,,,,,1,2,2,,5,,2,0,,1, 
protob,XXX1707,0,0,0,2,,8,3303,3214,,0,,0,0,0,0,no check,1,1,0,,,,,,1,2,3,,8,,2,0,,1, 
protob,XXX1782,0,0,1,2,,5,3529,3745,,0,,0,0,0,0,no check,1,1,0,,,,,,1,2,4,,5,,2,0,,1, 
protob,XXX1851,0,0,1,1,,5,2539,2642,,0,,0,0,0,0,no check,1,1,0,,,,,,1,2,5,,5,,2,0,,1, 
protob,BACKEND,0,0,4,6,2000,28,15204,15726,0,0,,0,0,0,0,UP,5,5,0,,0,17645,0,,1,2,0,,28,,1,0,,2, 

Где это ограничение исходит? Я действительно хочу сузить сотни тысяч подключений в этом экземпляре haproxy. (У машины есть сеть, процессор и оперативная память).

ответ

10

Итак, читая источник версии 1.3.x, я узнаю, что: Есть два максимума. Один из них - глобальные соединения с max #, заданные с -n в командной строке и maxconn в глобальной конфигурации. Другое - это соединения с прокси-сервером max #, заданные с -N в командной строке или настроенные для каждого прокси-сервера в конфигурации. В частности, вы не можете настроить максимальное количество подключений по умолчанию на прокси-сервер, отличное от командной строки! По умолчанию ... подождите ... 2000! Поэтому добавление «maxconn 200000» в каждую из секций «прослушивания» в файле /etc/haproxy/haproxy.cfg решает эту проблему.

Обратите внимание, что, несмотря на то, что документация довольно хорошая, это не помогло объяснить это. В частности, из чтения документации я думал, что глобальное maxconn будет применяться и к каждому прокси, но не так. Глобальное maxconn равно , для которого используется общее число подключений, но должно быть явно указано локальное максимальное количество соединений для данного прокси-сервера.

+1

Я думаю, что ваш ответ немного запутан. Вы говорите: «вы не можете настроить максимальные соединения по умолчанию на прокси-сервер, отличные от командной строки», а также что «добавление« maxconn 200000 »в каждую секцию« прослушать »в .cfg решает проблему», что кажется противоречивым , –

+0

«Прокси» и «прослушивание» различны. Есть два разных максимума. Это был весь путаница. –

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