URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 6722
[ Назад ]

Исходное сообщение
"Уменьшение TIME_WAIT на нагруженных серверах"

Отправлено obl , 04-Фев-10 12:28 
На сервере крутится апач + php, отдает динамический контент, стоит nginx для отдачи статики, но ее мало.
скрипты PHP работают с мускулем и мемкешем, все на сторонних серверах


Ось Open SUSE 11.1:
# uname  -a
Linux 24x42 2.6.27.42-0.1-default #1 SMP 2010-01-06 16:07:25 +0100 x86_64 x86_64 x86_64 GNU/Linux


Проблема в том что time-wait больше половины.  
# netstat -na | grep TIME_WAIT |wc
   1847   11082  149607
# netstat -na |wc
   2290   13986  182157


локально так вообще мистика:
# netstat -na |grep 127.0.0.1 | wc
    851    5106   68931
# netstat -na |grep 127.0.0.1 | grep TIME_WAIT| wc
    829    4974   67149


в конфиге нжиникса:
    send_timeout   15s;
    sendfile       on;
    tcp_nopush     on;
    tcp_nodelay    on;
    keepalive_timeout 1;
    reset_timedout_connection on;


в апаче keep-alive выключен.

что уже поменяно в sysctl:
net.ipv4.tcp_fin_timeout=3
net.ipv4.tcp_retries2=3
net.ipv4.tcp_keepalive_time=72

net.ipv4.neigh.default.base_reachable_time_ms = 1500
net.ipv4.neigh.lo.base_reachable_time_ms = 1500
net.ipv4.neigh.eth2.base_reachable_time_ms = 1500
net.ipv4.neigh.eth3.base_reachable_time_ms = 1500

net.ipv4.tcp_syncookies=1
net.ipv4.tcp_max_syn_backlog=1024
net.ipv4.tcp_fin_timeout=3
net.ipv4.tcp_keepalive_time=72
net.ipv4.tcp_keepalive_probes=3
net.ipv4.tcp_orphan_retries=1


сделать это надо без перезагрузок и тем более пересборок ядра


Содержание

Сообщения в этом обсуждении
"Уменьшение TIME_WAIT на нагруженных серверах"
Отправлено Michael , 04-Фев-10 12:56 
>[оверквотинг удален]
>net.ipv4.neigh.lo.base_reachable_time_ms = 1500
>net.ipv4.neigh.eth2.base_reachable_time_ms = 1500
>net.ipv4.neigh.eth3.base_reachable_time_ms = 1500
>
>net.ipv4.tcp_syncookies=1
>net.ipv4.tcp_max_syn_backlog=1024
>net.ipv4.tcp_fin_timeout=3
>net.ipv4.tcp_keepalive_time=72
>net.ipv4.tcp_keepalive_probes=3
>net.ipv4.tcp_orphan_retries=1

поиск рулит http://www.opennet.me/base/dev/socket_timeout.txt.html


"Уменьшение TIME_WAIT на нагруженных серверах"
Отправлено obl , 04-Фев-10 13:08 
>поиск рулит http://www.opennet.me/base/dev/socket_timeout.txt.html

а еще рулит мозг :)
знаете почему оно мне не подходит? потому что у меня линукс! а параметр MSL есть ТОЛЬКО во FreeBSD )))

забыл добавить - сделать это надо без перезагрузок и тем более пересборок ядра


"Уменьшение TIME_WAIT на нагруженных серверах"
Отправлено Michael , 04-Фев-10 14:24 
>>поиск рулит http://www.opennet.me/base/dev/socket_timeout.txt.html
>
>а еще рулит мозг :)
>знаете почему оно мне не подходит? потому что у меня линукс! а
>параметр MSL есть ТОЛЬКО во FreeBSD )))
>
>забыл добавить - сделать это надо без перезагрузок и тем более пересборок
>ядра

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


"Уменьшение TIME_WAIT на нагруженных серверах"
Отправлено obl , 04-Фев-10 15:37 

>на линуксе такой параметр тоже есть, но он захардкожен в ядре

ок пусть она есть в ядре, но как называется?
в той ссылке что мы обсуждаем мельком упоминается то что возможно работает, а такого параметра в текущем .config уже и нету :)


"Уменьшение TIME_WAIT на нагруженных серверах"
Отправлено Michael , 04-Фев-10 15:51 
>
>>на линуксе такой параметр тоже есть, но он захардкожен в ядре
>
>ок пусть она есть в ядре, но как называется?
> в той ссылке что мы обсуждаем мельком упоминается то что возможно
>работает, а такого параметра в текущем .config уже и нету :)
>

#define TCP_TIMEWAIT_LEN (60*HZ)
в include/net/tcp.h


"Уменьшение TIME_WAIT на нагруженных серверах"
Отправлено Аноним , 04-Фев-10 20:44 
>>
>>>на линуксе такой параметр тоже есть, но он захардкожен в ядре
>>
>>ок пусть она есть в ядре, но как называется?
>> в той ссылке что мы обсуждаем мельком упоминается то что возможно
>>работает, а такого параметра в текущем .config уже и нету :)
>>
>
>#define TCP_TIMEWAIT_LEN (60*HZ)
>в include/net/tcp.h

Если не секрет, чем Вам мешают эти TIME_WAIT? Ну есть они, ну и бог с ними.
Если уж очень хочется уменьшить их число, то можно попробовать подкрутить tcp_tw_recycle/tcp_tw_reuse


"Уменьшение TIME_WAIT на нагруженных серверах"
Отправлено obl , 05-Фев-10 22:10 

>Если не секрет, чем Вам мешают эти TIME_WAIT? Ну есть они, ну
>и бог с ними.
>Если уж очень хочется уменьшить их число, то можно попробовать подкрутить tcp_tw_recycle/tcp_tw_reuse
>

не секрет, когда их несколько тысяч это нормально, когда десятки тысяч они и память кушают и лимиты оси подходят к тому месту, которое в культурном обществе лучше не упоминать :)


"Уменьшение TIME_WAIT на нагруженных серверах"
Отправлено Аноним , 05-Фев-10 23:22 
>
>>Если не секрет, чем Вам мешают эти TIME_WAIT? Ну есть они, ну
>>и бог с ними.
>>Если уж очень хочется уменьшить их число, то можно попробовать подкрутить tcp_tw_recycle/tcp_tw_reuse
>>
>
>не секрет, когда их несколько тысяч это нормально, когда десятки тысяч они
>и память кушают и лимиты оси подходят к тому месту, которое
>в культурном обществе лучше не упоминать :)

Десятков тысяч - в посте автора не видно, те пара тысяч, что у него есть, по-моему вполне нормально и можно не заморачиваться по этому поводу, если конечно у него не какой-нибудь VDS (в этом случае у него все равно мало шансов что-то существенно подкрутить).


"Уменьшение TIME_WAIT на нагруженных серверах"
Отправлено obl , 06-Фев-10 01:10 
>[оверквотинг удален]
>>>
>>
>>не секрет, когда их несколько тысяч это нормально, когда десятки тысяч они
>>и память кушают и лимиты оси подходят к тому месту, которое
>>в культурном обществе лучше не упоминать :)
>
>Десятков тысяч - в посте автора не видно, те пара тысяч, что
>у него есть, по-моему вполне нормально и можно не заморачиваться по
>этому поводу, если конечно у него не какой-нибудь VDS (в этом
>случае у него все равно мало шансов что-то существенно подкрутить).

а что крутить чтобы было существенно? ;)


"Уменьшение TIME_WAIT на нагруженных серверах"
Отправлено Аноним , 06-Фев-10 03:10 
>>Десятков тысяч - в посте автора не видно, те пара тысяч, что
>>у него есть, по-моему вполне нормально и можно не заморачиваться по
>>этому поводу, если конечно у него не какой-нибудь VDS (в этом
>>случае у него все равно мало шансов что-то существенно подкрутить).
>
>а что крутить чтобы было существенно? ;)

Наверно тогда стоит подкрутить тарифный план на VDS ну или выделенный сервер :)


"Уменьшение TIME_WAIT на нагруженных серверах"
Отправлено obl , 05-Фев-10 22:07 
>>
>>>на линуксе такой параметр тоже есть, но он захардкожен в ядре
>>
>>ок пусть она есть в ядре, но как называется?
>> в той ссылке что мы обсуждаем мельком упоминается то что возможно
>>работает, а такого параметра в текущем .config уже и нету :)
>>
>
>#define TCP_TIMEWAIT_LEN (60*HZ)
>в include/net/tcp.h

большое спасибо!
рецепт можно выложить в "рецепты" :)
ибо когда искал не нашел ничего похожего

#define TCP_RETR2       5  
#define TCP_SYN_RETRIES  3
#define TCP_SYNACK_RETRIES 3
#define TCP_ORPHAN_RETRIES 5
#define TCP_TIMEWAIT_LEN (5*HZ)

#define TCP_PAWS_MSL    5
#define TCP_KEEPALIVE_PROBES    5


"Уменьшение TIME_WAIT на нагруженных серверах"
Отправлено alfamayonez , 15-Июл-10 13:32 
>[оверквотинг удален]
>ибо когда искал не нашел ничего похожего
>
>#define TCP_RETR2       5
>#define TCP_SYN_RETRIES  3
>#define TCP_SYNACK_RETRIES 3
>#define TCP_ORPHAN_RETRIES 5
>#define TCP_TIMEWAIT_LEN (5*HZ)
>
>#define TCP_PAWS_MSL    5
>#define TCP_KEEPALIVE_PROBES    5

/proc/sys/net/ipv4/tcp_fin_timeout
http://alfamayonez.ru/2010/07/11/time_wait/