Сервер RX получил запрос, но не смог его выполнить
«Внутренняя ошибка сервера» в веб-клиенте Directum RX: запрос дошёл до сервера, но там упал. Как по времени и пользователю найти исключение в журнале веб-сервера и понять, чья это зона: прикладной код, база, брокер или хранилище.
Что это значит
Сообщение отличается от «Сервер недоступен»: связь с сервером есть, запрос до него дошёл, но при выполнении произошло исключение, и сервер ответил кодом 500. Само сообщение причину не называет. Она записана в журнале веб-сервера RX на то же время.
Обычно ошибка привязана к конкретному действию: открыть определённую карточку, сохранить документ, выполнить задание. Если она появляется у всех и на любом действии, значит, недоступно что-то общее: база, брокер очередей, хранилище.
Как проверить
- Записать точное время, пользователя и действие. Без этого искать в журналах долго.
- В браузере открыть инструменты разработчика, вкладку «Сеть», повторить действие и посмотреть, какой запрос вернул 500. Его адрес подскажет, какая операция упала.
- В журнале веб-сервера RX найти запись уровня Error на это время для этого пользователя и прочитать исключение целиком, вместе со стеком вызовов.
- По месту падения определить, чья это зона:
- исключение в прикладном модуле, в стеке пространства имён вашего решения (например,
NullReferenceExceptionв обработчике): разбираются разработчики решения; - ошибка базы (could not execute query, обрыв чтения, таймаут): разбирается администратор СУБД, см. could not execute query и Exception while reading from stream; - брокер сообщений (Already closed), блокировка записи (Не удалось установить блокировку) или несовпадение сборок после публикации (Method not found in type): у каждой из этих ошибок свой разбор в справочнике.
Что сделать
- Чинить по найденному исключению. Текст на экране одинаковый у десятков разных причин.
- Если в журнале ничего нет, проверить, что журнал пишется и уровень логирования не поднят до Fatal. Если журналы собираются централизованно, искать там по времени и имени пользователя, см. Логи RX.
- Если ошибка массовая и началась после публикации или обновления, первым делом сравнить с тем, что менялось, и при необходимости откатить, см. Обновление RX с планом отката.
- Вендору или разработчикам отдавать время, пользователя, действие и полный текст исключения. Фраза «внутренняя ошибка сервера» без этого ничего не говорит.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать