![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Долго обрабатывается запрос [D7, Win2k]
Zelius © (2004-12-23 03:33:00)Пишу клиента и сервер с помощью Indy, которые работают через TCP/IP, все работает, но возник вопрос - время посылки и обработки запроса сервером составляет порядка 300 мс, при простом приеме пакета из 4 байт и отсылки 8 байт на гигабитной сети, пинг показывает меньше 10 мс, время обработки запроса на локальной машине не больше 15 мс. Сначала думал на Инди, переписал на чистые сокеты - не помогает. Может кто сталкивался и подскажет где тут узкое место? Спасибо.
Slym (2004-12-24 11:26:00) [1]UDP?!
Zelius (2004-12-23 12:45:00) [2]Это Nagle алгоритм так мешает? Его можно отключить, но майкрософт не рекомендует этого делать, правда не говорит, как избежать задержки.
Slym (2004-12-23 06:49:00) [3]узкое место - буферизация!
Ты фактически отправляешь данные в буфер, а система из данных делает пакеты и ставит в очередь на отправку, причем система старается делать "большие" пакеты и маленькие пакеты отправляет только по "таймауту" данных... вот таймаут и составляет те самые 200-300 мс.
Да не забывай что TCP коннект это не сразу обмен данными, а предварительная договоренность сокетов по обмену (запрос на коннект-ответ-обмен), на это тоже поправку делай.
Пробуй делать какой-нибудь flush buffer