В последнее время у нашего RDP-сервера возникли некоторые проблемы.

Удаленные пользователи будут использовать RDP-сервер для подключения к серверу приложений, а пользователи, находящиеся в здании, будут подключаться напрямую к серверу приложений.

В последнее время проблема заключается в том, что удаленные пользователи, использующие RDP-сервер для подключения к серверу приложений, получат ошибку внешнего исключения C0000006. Когда первый пользователь получит эту ошибку, ошибка будет медленно распространяться среди пользователей, пока все, кто использует Программу № 1 и Программу № 2, не получат ошибку C0000006. Перезагрузка RDP-сервера устраняет проблему в большинстве случаев.

Я не уверен в том, какая проблема может быть причиной ошибки C0000006 для этих двух Программ (они разговаривают друг с другом), но обычно первыми предвестниками этого появления пользователей являются Программа № 1 и Программа № 2. пусто в диспетчере задач примерно так:

Сервер RDP C0000006 precursor.png

Я знаю, что это длинный выстрел, но есть идеи, что может быть причиной этого? Похоже, связь между сервером RDP и сервером приложений. ИТ-специалисты хотели бы решить эту проблему с нашей стороны, но если это на самом деле ошибка в программировании, то это исправление программирования стороннего консультанта, и оно должно быть им устранено.

1 ответ1

1

Ошибки 0xC0000006 возникают, когда ваша программа отправляет на страницу больше данных для EXE в память, но не может. Обычно это вызвано проблемой ввода-вывода при попытке чтения данных.

Поэтому убедитесь, что связь между сервером приложений и сервером RDP стабильна и что хранилище на сервере приложений отвечает и быстро отправляет данные. По сути, вы не хотите никаких неожиданных отбрасываний или длительных задержек при поступлении данных на сервер RDP.

Другой вариант (или дополнительное действие), поскольку, судя по значку, показанному на скриншоте, состоит в том, что, поскольку приложение написано на Delphi, его можно перекомпилировать, чтобы включить заголовок, который скажет Windows загрузить всю программу в память сразу, избегая необходимости постраничного ввода данных позже, таким образом избегая ошибки ...

{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP or IMAGE_FILE_NET_RUN_FROM_SWAP}

И убедитесь, что Winapi.Windows входит в раздел « Uses ».

Первый флаг указывает, что он должен полностью загружаться в память, если программа находится на съемном носителе (то есть на флеш-диске), а второй - делать это, если программа находится на общем сетевом ресурсе (как, вероятно, у вас).

Более подробная информация доступна на StakcOverflow:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .