Назад | Перейти на главную страницу

Как я могу устранить чрезмерную задержку между клиентом и сервером?

В большой частной сети наблюдается чрезмерная задержка между двумя блоками, которые я контролирую. Это останавливает сервер, предоставляющий веб-службу клиенту, поскольку это вызывает тайм-ауты.

Вот медленный запрос, зарегистрированный в Charles

Timing  
Request Start Time  03/11/10 23:21:33
Request End Time    03/11/10 23:21:33
Response Start Time 03/11/10 23:21:42
Response End Time   03/11/10 23:21:42
Duration    8.99 sec
Request Duration    16 ms
Response Duration   0 ms
Latency 8.97 sec
Speed   1.30 KB/s
Response Speed  ∞ KB/s
Size    
Request Header Size 412 bytes
Response Header Size    151 bytes
Request Size    -
Response Size   11.17 KB (11436 bytes)
Total Size  11.72 KB (11999 bytes)
Request Compression -
Response Compression    - 

В качестве теста я просто попытался получить файл изображения размером 423 КБ через браузер, но он загружается так медленно, что тормозит.

Как я могу найти причину проблемы?

Я пробовал использовать пингплоттер

Похоже, виноваты хмель 3 и 4? Куда мне идти дальше?

ОТВЕТ

Это оказалось проблемой с клиентским ящиком, работающим под управлением Windows Web Server 2008 R2, и известной проблемой скорости сети, если маршрутизатор не может обрабатывать масштабирование окна TCP в сети. Обновили программное обеспечение роутера, и проблема была решена.

Попытайтесь воспроизвести проблему с максимально возможного количества разных точек. Вы, вероятно, найдете между ними что-то общее (будь то сервер, который они используют, коммутатор и т. Д.). Соберите данные трассировки с каждой конечной точки.

Всегда лучше использовать луковый подход: добавлять / удалять слои. Вы можете начать с клиента и подходить все ближе и ближе к серверу. Или наоборот.

Обязательно проверьте статистику интерфейса на предмет количества ошибок. Я считаю очень полезным запустить tcpdump / Wireshark на обоих концах и захватить пакеты из сеанса TCP, а затем сравнить оба. Wireshark отлично справляется с выявлением наиболее очевидных проблем (например, ошибок контрольной суммы или повторных передач).

Это оказалось проблемой с клиентским ящиком, работающим под управлением Windows Web Server 2008 R2, и известной проблемой скорости сети, если маршрутизатор не может обрабатывать масштабирование окна TCP в сети. Обновили программное обеспечение роутера, и проблема была решена.

http://www.intel.com/support/motherboards/server/sb/CS-030717.htm

Глядя на результаты вашего пингплоттера, похоже, что основная отображаемая проблема заключается в том, что некоторые устройства на пути медленно отвечают на эхо-запросы ICMP (если ваше конечное устройство # 10, вы получаете среднее RTT 42 мс, но у вас есть устройства посередине, которые в среднем имеют RTT 82 мс, возможно, это связано с загрузкой устройства, но это может быть трудно сказать).

Требуется ли серверу разрешение имен перед обслуживанием контента? Похоже, что от «запрос сделан» до «запрос подтвержден» проходит 9 секунд, и единственное, что действительно соответствует этому, - это если сервер пытается выполнить поиск (какой-то) и не сразу получает ответ.

установите mtr и запустите его между клиентом и сервером и наоборот. Вы сможете увидеть потерю пакетов и задержку на каждом переходе. Очень полезный инструмент. Помните, что если ваша сеть формирует трафик, результаты не будут надежными.