У меня есть VPS-сервер под управлением Windows 2012 R2, который используется с программным обеспечением, которое выполняет примерно 15 000 подключений в минуту. Я заметил некоторые задержки и другие проблемы с VPS и решил перейти на выделенный сервер.
Технические характеристики VPS: «4 виртуальных ядра, 3,1 ГГц, 8 ГБ ОЗУ, SSD, соединение 100 Мбит». Специализированные характеристики: «Xeon E5-1620 v2 3,7 ГГц, ОЗУ 64 ГБ, соединение 1 ГБ»
Я установил на него Windows 2012 R2 и заметил резкое снижение скорости работы программного обеспечения. Было всего около 5000 подключений в минуту. Я подумал, что это могло быть потому, что это было на жестком диске, а не на SSD, поэтому я установил RAMDisk. Улучшения в производительности не было. Я начал изучать ограничения TCP, думая, что контейнер VPS, который был автоматически настроен для меня, может отличаться от моих настроек. Я не мог найти много. Я добавил кучу опций в параметры TCP в реестре и по-прежнему не вижу разницы.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"TcpTimedWaitDelay"=dword:0000001e
"MaxUserPort"=dword:0000fffe
"TcpNumConnections"=dword:00fffffe
"TcpMaxDataRetransmissions"=dword:00000005
Программное обеспечение подключается к одному IP-адресу через несколько портов (~ 100 портов).
Я не знаю, где сейчас искать. Все тесты скорости показывают, что выделенный сервер значительно быстрее, чем VPS, но VPS с более медленным подключением и менее мощным оборудованием может достигать более быстрых подключений в минуту.
Любое направление, куда я могу смотреть дальше, будет оценено.
Попробуйте следующие изменения (подробнее).
appcmd.exe установить конфигурацию /section:system.webserver/serverRuntime / appConcurrentRequestLimit: 100000
Настроить это пример
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<runtime>
<legacyUnhandledExceptionPolicy enabled="false" />
<legacyImpersonationPolicy enabled="true"/>
<alwaysFlowImpersonationPolicy enabled="false"/>
<SymbolReadingPolicy enabled="1" />
<shadowCopyVerifyByTimestamp enabled="true"/>
</runtime>
<startup useLegacyV2RuntimeActivationPolicy="true" />
<system.web>
<applicationPool maxConcurrentRequestsPerCPU="20000" />
</system.web>
</configuration>