пятница, 10 июля 2009 г.

3 секунды или 5 секунд?

Возникла проблема при установлении соединения с базой данных. 99.9% коннектов проходило за милисекунды, но единичные выстрелы проходили или за 3 или за 5 секунд в зависимости от ОС (Linux, FreeBSD). Причём промежуточных значений не было. Локализация показала, что проблема при установлении большого числа tcp соединений в короткий отрезок времени. Спасибо, техническому директору и админам, что решение было найдено достаточно быстро.

Надо было увеличить сетевые буферы.
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_max = 262144

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

После этого мы столкнулись с другой проблемой - закончились порты, но это уже другая история.

3 комментария:

Анонимный комментирует...

> После этого мы столкнулись с другой проблемой - закончились порты, но это уже другая история.

например это решается так

WBR, Bliznezz.

Анонимный комментирует...

сорри, в предыдущем каменте ссылку зарезало
http://w2a.ru/blog/linux/345.html

WBR, Bliznezz.

Alexxz комментирует...

Bliznezz спасибо за совет, учту.