Ускорение скорости этого IIS / .NET / LINQ извлекает данные из сетевых буферов

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

Например, это размер сетевого буфера в байтах для одного из наиболее долгоживущих подключений к серверу базы данных с течением времени:

Network Buffer Graph

Веб-серверы запускают приложение .NET 4.0, работающее в интегрированном режиме IIS на веб-серверах Windows 2008 R2. Сервер SQL - это сервер 2008 R2.

Я считаю, что сервер SQL возвращает данные на веб-серверы быстрее, чем приложение на веб-сервере может собирать данные из буферов. Я попытался настроить все, что мог, в сетевых драйверах, чтобы обойти эту проблему. В частности, увеличение очередей RSS, отключение модерации прерываний и настройка сервера Windows 2008 R2 на более агрессивное увеличение размера буфера.

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

  1. Есть ли способ в . NET, чтобы он увеличивал размер сетевых буферов? «Улучшенный стек TCP 2008 R2» редко решает включить масштабирование окна (увеличение размера буфера более 65 кбайт) для этого соединения (вероятно, из-за низкой задержки). Похоже, что в Windows server 2008 r2 отсутствует возможность вручную устанавливать эту систему в целом (раньше были записи реестра, которые теперь игнорируются). Итак, есть ли способ заставить это сделать это в коде?
  2. Есть ли что-нибудь, что можно настроить, чтобы увеличить скорость, с которой приложение считывает информацию для сетевых буферов, в частности для соединений SQL?

Изменить:
Запрошенный запрос DMV отключен на ASYNC_NETWORK_IO:

SELECT * FROM sys.dm_os_wait_stats ORDER BY waiting_tasks_count desc;
wait_type  waiting_tasks_count  wait_time_ms  max_wait_time_ms  signal_wait_time_ms
CXPACKET            1436226309    2772827343             39259           354295135
SLEEP_TASK           231661274     337253925             10808            71665032
LATCH_EX             214958564     894509148             11855            84816450
SOS_SCHEDULER_YIELD  176997645     227440530              2997           227332659
ASYNC_NETWORK_IO     112914243      84132232             16707            16250951
14
задан Tomalak 3 March 2011 в 12:53
поделиться