Страница 1 из 1

socket overflow on Solaris10 x86

Добавлено: 07 июл 2006, 14:05
ir
[trn]mozh kto znaet, gde poryt' pri takoi probleme: pri bol'shoi nagruzke na solyarkovyi server s zhaboi idet chto-to tipa perepolneniya bufera soketa i novye konnekty refyused. V kakuyu storonu smotret' - na sistemy ili na zhabu? K-vo fd vrode bol'shoe (> 65000, no mozhet nado bol'she),
vremya taim-auta sokrasheno s 4 min do 1 (mozhet nado eshe men'she?). V logah nichego kriminal'nogo ne vidat'... vrode...
Nikakih vnyatnyh sovetov v gugle ne nashla, hotya problema eta izvestnaya. [/trn]

Добавлено: 07 июл 2006, 15:13
Проф. Преображенский
Imho, надо посмотреть на параллельные процессы с высоким приоритетом.

Добавлено: 07 июл 2006, 15:35
aissp
Выскажу предположение. Существует ограничение на количество фд открытых одним процессом. Если оно превышается, то серверный процесс будет отказывать в приеме нового соединения. Такое бывает если по окончанию работу с клиентом вызывать close(sock) beside shutdown(sock, READWRITE); То есть первое чтобы я поглядел не копяться ли открытые фал дескрипторы на серверном процессе - обычно ето выглядит как куча сокетов в положении тайм-вайт принадлежаших серверному процессу. Впрочем в яве ен силет и где там ручку крутить подсказать не могу. Удачи

Добавлено: 07 июл 2006, 16:00
ir
aissp писал(а):Выскажу предположение. ....
cool! [trn]Spasibo! Poshla smotret'. [vot chem inogda DB adminam prihoditsya zanimat'sya.... eh...][/trn]

Добавлено: 08 июл 2006, 12:24
ir
[trn]posmotrela. deistvitel'no - kopyatsya neaktivnye. Pri etom zhaba zakryvaet vse kak polozheno. Znachit, nado v sisteme podkrutit'. Vidimo taim-aut bol'shoi. [/trn]

Добавлено: 08 июл 2006, 14:06
aissp
Уменьшение тайм-аута как и его полное отключение опцией solinger не помогут - речь тут идет либо о неправильно сделанном протоколе либо об некорректности в программе. Сокеты в тайм-ауте копяться? У серверного процесса? - Попробуйте чтобы клиент закрывал соединение а не серве. То есть выдавайте сокет клиенту и закрывайте его либо по тайм-ауту (типа keep alive) либо когда клиент сигналит о закрытие. Дело в том что в тайм вайт впадает сокет выполнивший активное закрытие - то кто посылает первый fin. Точнее (я по крайне мере) сказать затрудняюсь без исследований под etherealom (самое простое мне кажется и самое правильное) попробуйте спросить тут akjm могет он скажет больше моего.

Ну и в конце статью, я так понимаю не для тебя а для кого там у вас отвечает не за базы данных:)

http://netarchlab.tsinghua.edu.cn/ftp/p ... 11B_04.PDF

ну вот чем могу