Операция над сокетом не может быть выполнена, потому что системе не хватило места в буфере или потому что очередь была переполнена
У меня есть машина с несколькими приложениями, которые постоянно выполняют UNC-доступ (\\server-ip\share
). Через несколько дней все UNC становятся недоступными с этой машины.
- При убивании приложений UNC снова доступен
- При перезапуске процессов UNC снова сразу не доступен
- Перезагрузка машины решает проблему в течение нескольких дней
Вероятно, есть истощение порта, но netstat
не показывает слишком много подключений или зависших подключений, а на вкладке производительности диспетчера задач не отображаются ненормальные цифры. TcpQry показывает нормальные номера сопоставления TCP/UDP.
Также
- Захват пакета показывает, что при возникновении проблемы нет запроса (запрос не достигает предположения об исчерпании порта).
- Просмотрщик событий ничего не раскрывает
Сделал следующие изменения реестра, хотя это, вероятно, только задержало бы проблему, но не устранило ее, но в любом случае это не помогло:
Найти
autodisconnect
значение вHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
, Если его там нет, создайте новыйREG_DWORD
называетсяautodisconnect
, Отредактируйте значение как шестнадцатеричное и установите егоffffffff
,найти
KeepConn
вHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters
, Если его не существует, создайте его какREG_DWORD
значение и присвойте ему значение 65534.найти
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
и создать новыйDWORD
значение по имениMaxUserPort
, Установите значение 65534.
Мои вопросы:
- Как определить исчерпание очереди или буферного пространства?
- Если действия UNC действительно истощают ресурсы, есть ли альтернатива, которая не высвобождает ресурсы?