Zacznę od stwierdzenia, że szukałem już wielu źródeł informacji lub rozwiązania, ale nie byłem w stanie znaleźć trwałego rozwiązania.
Problem: Losowo, z powodów, które wydają się być bez powodu, serwer Windows zaczyna odpowiadać komunikatem o błędzie, gdy próbuje uzyskać dostęp do dowolnego zasobu sieciowego. Nie ma znaczenia, czy jest to dysk sieciowy, ścieżka UNC czy łącze symboliczne. Ponadto klienci nie mogą połączyć się z serwerem, gdy ten błąd zacznie występować. Pulpit zdalny stwierdza, że nie można znaleźć komputera, gdy próbuję się połączyć. PING zwróci przypisane IP, ale stwierdza przekroczenie limitu czasu żądania. Brak informacji w dzienniku zdarzeń systemu Windows dotyczących tego błędu.
Serwer jest maszyną wirtualną z systemem Windows Server 2016. Jest przypisana tylko jedna wirtualna karta sieciowa i nie ma segmentowanych sieci VLAN.
Począwszy od http://support.microsoft.com/kb/319504 - Zdaję sobie sprawę, że dotyczy to starszej wersji systemu Windows, ale w rzeczywistości dostaję „wystąpił błąd systemowy 68”, gdy wykonuję polecenie „wykorzystanie netto * \ server \ folder ”w momencie, gdy serwer generuje błąd. Jednak żaden ze sposobów rozwiązania problemu nie działa.
Trudno mi uwierzyć, że wszystkie efemeryczne porty zostały wykorzystane. Wykonanie polecenia „netsh int ipv4 show dynamicport tcp” aktualnie pokazuje, że dostępnych jest 16384 portów.
Wykonanie polecenia „netstat -ano” w czasie, gdy serwer generuje błąd, wyświetla bardzo mało używanych zasobów sieciowych (mniej niż 50). Stany słuchają lub są ustalone. Brak sesji lub portów utknęło w time_wait lub close_wait.
Następnie https://support.microsoft.com/en-us/help/929851/the-default-dynamic-port-range-for-tcp-ip-has-changed-in-windows-vista . W tym artykule potwierdzono, co widzę dla zakresu dynamicznego portów, że zaczyna się od 49152 zamiast od 1024 do 5000. Pokazał mi także polecenie netsh użyte powyżej.
Większość wyszukiwań w Google po prostu kieruje mnie z powrotem do support.microsoft.com/kb/319504, który jest pierwszym artykułem, do którego poszedłem lub dotyczy niezwiązanego produktu (takiego jak BizTalk lub Exchange).
Maszyna wirtualna ma niewielkie obciążenie. Nie ma wielu podłączonych klientów. Jedyne zainstalowane oprogramowanie to SQL Server 2016.
Jeśli zrestartuję maszynę wirtualną, błąd zniknie na kilka dni. Potem wraca. I naprawdę dziwne jest to, że mam 2 maszyny wirtualne, które działają w ten sposób. Maszyna hosta VM działa bezbłędnie. Wszystkie inne maszyny wirtualne na tym hoście działają bezbłędnie. Sieć bazowa również nie zgłosiła problemów. Wszystkie komputery są w tej samej domenie.
Nie wiem, co powoduje błąd. Każda pomoc byłaby bardzo mile widziana.
Dzięki
Odpowiedzi:
Konfiguracja sieciowa maszyny wirtualnej jest tutaj istotna. Udostępnij to?
Chociaż lepiej znam Linuksa niż Windowsa, jeśli używasz prostej sieci pomostowej, mogę sobie wyobrazić, że dzieje się tak z powodu wyczerpania zasobów spowodowanego przez jeden lub więcej innych węzłów (dwie maszyny wirtualne i host współdzielący adres IP, i między nimi zużywają wszystkie efemery) lub po prostu dlatego, że efemeryczny port, z którego system chce korzystać, jest już używany przez inną maszynę wirtualną lub sam host, a system Windows naiwnie zakłada, że ma wyłączne prawa do wszystkich portów, co oznacza, że brak jednoznacznego
bind
włączeniamin(in_use_port + 1, max_port)
oznacza wyczerpanie portów. Jednym z aspektów tego, który nie pasuje do tej hipotezy,ping
jest brak odpowiedzi. Ping jest ICMP i nie ma nic wspólnego z dostępnością efemerycznych portów ani ich brakiem.źródło