Re: max packet size
- From
- Andrew Ryazanov ()
- To
- niro
- Date
- 2002-09-02T11:44:45Z
- Area
- SU.WINDOWS.NT.PROG
From: "Andrew Ryazanov" <rash@land.ru>
"niro" <niro@krista.ru> сообщил/сообщила в новостях следующее:
news:akut7k$502$1@linux.krista.ru...
>
> Hi!
>
> > Видимо переполняется очередь. Рекомендую посмотреть getsockopt SO_SNDBUF
и
> > SO_MAX_MSG_SIZE
>
> Я проверил буферы SO_SNDBUF и SO_RCVBUF, они по умолчанию оказались 8Кб.
> Поставил
> мегабайтными, система начала жить немножко дольше :) т.е. приходит
максимум
> сообщений на
> 11 Мб.
> А параметр SO_MAX_MSG_SIZE работает только для датаграммных сокетов, для
> потоковых - увы. :(
>
> Может кто-нибудь знает как чистить буфер или сбрасывать его после
получения
> крупного сообщения?
Ну так дело в том что: Ты запихиываешь в очередь кучу данных, а сетевая
подсистема не успевает все отправлять. Следовательно забивается она,и
очередной вызов send ждет пока появится место. Решение : Не пихать туда
столько данных, зная что они не успевают отправляться. Даже если сделаегшь
очередь в 100 мег, он рано или поздно забьется и система умрет.Можно
крутить все в потоке,и как только очередной send задумался, данные больше не
шлешь. Или собираешь во внутренний буфер впроге. Кстати очередь можно
сбросить вызовом WSAIoctl SIO_FLUSH
--
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5
* Origin: Talk.Mail.Ru (2:5020/400)