Serwer RDP daje C0000006 dla programów aplikacyjnych

0

Ostatnio nasz serwer RDP ma pewne problemy.

Użytkownicy zdalni będą używać serwera RDP do łączenia się z serwerem aplikacji , podczas gdy użytkownicy, którzy są w trakcie budowy, będą łączyć się bezpośrednio z serwerem aplikacji.

Ostatnio problem polega na tym, że użytkownicy zdalni, korzystający z serwera RDP do łączenia się z serwerem aplikacji , otrzymają błąd wyjątku zewnętrznego C0000006. Gdy pierwszy użytkownik otrzyma ten błąd, błąd rozprzestrzenia się powoli na użytkowników, dopóki wszyscy używający Programu nr 1 i Programu nr 2 nie otrzymają błędu C0000006. Ponowne uruchomienie serwera RDP naprawia problem przez większość czasu.

Nie jestem pewien co problem byłby, które byłyby przyczyną błędu C0000006 dla tych dwóch programów (rozmawiają ze sobą), ale zazwyczaj pierwszym prekursorem tego pnący się na użytkownikach są Program 1 i Program # 2 pokazywaniem puste w Menedżerze zadań, takie jak:

Serwer RDP C0000006 precursor.png

Wiem, że to długa szansa, ale masz pojęcie, co może być tego przyczyną? Wygląda na to, że komunikacja między serwerem RDP a serwerem aplikacji . Z przyjemnością naprawimy ten problem po naszej stronie, ale jeśli w rzeczywistości jest to błąd programowy, to jest to poprawka programistyczna zewnętrznego konsultanta i należy się tym zająć.

16o1denRatio
źródło

Odpowiedzi:

1

Błędy 0xC0000006 powstają, gdy program przechodzi do stronicowania więcej danych dla EXE do pamięci, ale nie może. Zwykle jest to spowodowane problemem we / wy podczas próby odczytu danych.

Upewnij się więc, że łączność między serwerem aplikacji a serwerem RDP jest stabilna, a pamięć na serwerze aplikacji szybko reaguje i wysyła dane. Zasadniczo nie chcesz żadnych nieoczekiwanych spadków ani dużych opóźnień w danych przychodzących do serwera RDP.

Inną opcją (lub dodatkową czynnością), ponieważ sądząc po ikonie pokazanej na zrzucie ekranu, jest to, że ponieważ aplikacja jest napisana w Delphi, można ją ponownie skompilować w celu włączenia nagłówka, który poinformuje system Windows, aby załadował cały program na raz, unikając później konieczności stronicowania danych, unikając w ten sposób błędu ...

{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP or IMAGE_FILE_NET_RUN_FROM_SWAP}

I upewnij się, że Winapi.Windowsjest on uwzględniony w Usessekcji.

Pierwsza flaga nakazuje jej całkowite załadowanie do pamięci, jeśli program znajduje się na dysku wymiennym (tj. Dysku flash), a druga nakazuje to zrobić, jeśli program znajduje się w udziale sieciowym (jak prawdopodobnie jest twój).

Więcej informacji jest dostępnych na StakcOverflow:

Ƭᴇcʜιᴇ007
źródło