Операция над сокетом не может быть выполнена, потому что системе не хватило места в буфере или потому что очередь была переполнена
У меня есть машина с несколькими приложениями, которые постоянно выполняют 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 действительно истощают ресурсы, есть ли альтернатива, которая не высвобождает ресурсы?