Анализ ситуации «Внутренняя ошибка сервера»

21 2

Ошибка «Внутренняя ошибка сервера» довольно распространённая и зачастую по ней затруднительно определить причины произошедшей ситуации. Для выяснения причин ситуации необходимо выполнить анализ событий на стороне сервера системы Directum RX.

В тексте отображаемой ошибки указан ID ошибки — это трасса процесса, которая фиксируется в лог-файле. По этой информации можно выполнить анализ и определить причины возникшей ситуации. Подробнее о трассировке в лог-файле в справке по системе.

Для анализа ситуации необходимо выполнить следующие действия:

  1. Откройте лог-файл веб-сервера за дату возникновения ситуации и выполните поиск по TraceId - идентификатору трассы, указанному в тексте отображаемой ошибки, найдите строку с ключевым словом "Error","Warn" или "Failed». Подробнее о расположении и наименовании лог-файлов в справке по системе. Для анализа лог-файлов удобно использовать программу Directum Log Viewer.
  2. Проанализируйте текст найденной ошибки. Она может содержать причину возникновения данной ошибки или будет отсылать к ошибке на конкретном сервисе системы, в этом случае необходимо анализировать лог-файл этого сервиса. При анализе текста ошибки рекомендуем использовать справку системы и поиск по базе знаний на сайте сообщества Directum Club.
  3. Если действия по устранению причины ошибки понятны, то выполните их.
  4. В случае, если самостоятельно разобраться в ситуации не удалось, оформите обращение в службу технической поддержки, к которому приложите:
  • Результат выполненного анализа лог-файлов в формате: какая ошибка была обнаружена, какие действия по устранению ошибки были предприняты, к какому результату они привели. Данная информация необходима для того, чтобы не прорабатывать уже выполненные вами действия и более оперативного анализа ситуации.
  • Проанализированные лог-файлы за дату воспроизведения ошибки. Они необходимы для анализа причины возникновения ошибки.

Пример анализа и выявления причин ошибки

Рассмотрим появление внутренней ошибки сервера при создании любого документа в системе из шаблона:

1. В данном случае трасса - "cl-b5aee466-bfcb04". Поиск в лог-файлах системы необходимо осуществлять по TraceId- идентификатору трассы, то есть по cl-b5aee466, так как данная часть трассы не изменяется.

В лог-файле веб-сервера за дату возникновения ситуации выполняем поиск по идентификатору трассы "cl-b5aee466 ".

2. Лог-файле веб-сервера фиксируется запись:

"tr":"cl-b5aee466-bfcb04", "l":"Info", "lg":"RestClientRequestSpan", "span":{"durationMs":61, "status":"Failed", "name":"Storage/Internal/CopyWithEncryption", "url":"https://directumrx.--.local/Storage/Internal/CopyWithEncryption?tr=cl-442e7e83-ws2edc", "subtr":"cl-442e7e83-ws2edc"}, "un":"u3988"," v":"4.12.0.0086"

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

3. В лог-файле сервиса хранилищ фиксируется запись:

"tr":"cl-b5aee466-wsc7c2", "l":"Error", "lg":"GlobalExceptionExtensions", "mt":"Not found binary data 73f7c33f-7253-47b4-b86a-70997bf9487c", "ex":{"type":"StorageService.Engines.Exceptions.StorageDataNotFoundException", "m":"Not found binary data 73f7c33f-7253-47b4-b86a-70997bf9487c", "stack":"at StorageService.Engines.Storages.FileStorage.GetEnsuredFilePath(Guid id)\n at StorageService.Engines.Storages.FileStorage.GetLength(Guid id)\n at lambda_method(Closure , Object , Object[] )"

Данная запись означает, что в хранилище отсутствуют тела некоторых документов, скорее всего, шаблонов, на основании которых создаются документы. Одной из причин наблюдаемой ситуации может быть то, что сервис хранилищ был перенесен на новый сервер уже после установки системы. Шаблоны документов импортируются в хранилище при первой установке системы. Если при переносе сервиса хранилищ на новый сервер не были импортированы данные из предыдущего хранилища, то система не сможет найти в хранилище шаблоны для создания документов, так как они остались в предыдущем хранилище.

Для решения ситуации необходимо выполнить копирование содержимого папки предыдущего хранилища в содержимое папки на сервере с сервисом хранилищ.

21
Авторизуйтесь, чтобы оценить материал.
2
Павел Заглядин

Статья супер полезная. Поможет в решении многих вопросов. Спасибо

Николай Казаков

Спасибо за структурированную информацию и последовательность действий

Авторизуйтесь, чтобы написать комментарий