Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, что означает неожиданное завершение пакета кода. Он содержит сведения о возможных причинах распространенных кодов ошибок, а также по устранению неполадок.
Когда процесс или контейнер завершается неожиданно?
Когда Azure Service Fabric получает запрос на запуск пакета кода, он начинает подготовку среды в локальной системе в соответствии с параметрами, заданными в манифестах приложений и служб. Эти подготовки могут включать резервирование конечных точек сети или ресурсов, настройку правил брандмауэра или настройку ограничений управления ресурсами.
После правильной настройки среды Service Fabric пытается открыть пакет кода. Этот шаг считается успешным, если операционная система или среда выполнения контейнера сообщает, что процесс или контейнер был успешно активирован. Если активация не выполнена, вы увидите в SFX сообщение о состоянии системы, похожее на следующее:
There was an error during CodePackage activation. Service host failed to activate. Error: 0xXXXXXXXX
После успешной активации пакета кода Service Fabric начинает мониторинг срока службы. На этом этапе процесс или контейнер может завершиться в любое время по ряду причин. Например, может произойти сбой инициализации библиотеки DLL, или у ОС может закончиться память в куче рабочего стола. Если ваш пакет кода завершился, в SFX будет показано следующее сообщение о состоянии:
The process/container terminated with exit code: XXXXXXXX. Please look at your application logs/dump or debug your code package for more details. For information about common termination errors, please visit https://aka.ms/service-fabric-termination-errors
Код выхода в этом сообщении о работоспособности — единственная подсказка, объясняющая, почему завершился процесс или контейнер. Он может быть создан любым уровнем стека. Например, этот код выхода может быть связан с ошибкой ОС или проблемой .NET или может быть вызван кодом. Используйте эту статью в качестве отправной точки для диагностики источника кодов завершения и возможных решений. Но помните, что это общие решения для распространенных сценариев и может не применяться к ошибке, которую вы видите.
Как я могу узнать, завершил ли Service Fabric пакет программного кода?
Service Fabric может отвечать за завершение пакета кода по различным причинам. Например, он может решить разместить пакет кода на другом узле для балансировки нагрузки. Вы можете убедиться, что Service Fabric завершил пакет кода, если в следующей таблице отображается любой из кодов выхода.
Примечание.
Если процесс или контейнер завершается с кодом выхода, отличным от кодов в следующей таблице, Service Fabric не несет ответственности за его завершение.
Код выхода | Описание |
---|---|
7147 | Указывает, что Service Fabric корректно завершит процесс или контейнер, отправив ему сигнал CTRL+C. |
7148 | Указывает, что Service Fabric завершил процесс или контейнер. Иногда этот код ошибки указывает, что процесс или контейнер не ответил своевременно после отправки сигнала CTRL+C, и его пришлось завершить. |
Другие распространенные коды ошибок и их потенциальные исправления
Код выхода | Шестнадцатеричное значение | Краткое описание | Основная причина | Возможное исправление |
---|---|---|---|---|
3221225794 | 0xc0000142 | STATUS_DLL_INIT_FAILED | Эта ошибка иногда означает, что на компьютере не осталось области на рабочем столе. Это особенно вероятно, если у вас есть множество процессов, принадлежащих приложению, работающему на узле. | Если программа не была создана для реагирования на сигналы CTRL+C, можно включить параметр EnableActivateNoWindow в манифесте кластера. Включение этого параметра означает, что пакет кода будет работать без окна графического интерфейса и не получит сигналы CTRL+C. Это действие также уменьшает объем совокупного рабочего пространства кучи, который потребляет каждый процесс. Если ваш программный пакет должен получать сигналы Ctrl+C, вы можете увеличить размер десктопного стека узла. |
3762504530 | 0xe0434352 | Не применимо | Это значение представляет код ошибки для необработанного исключения из управляемого кода (т. е. .NET). | Этот код выхода указывает, что приложение вызвало исключение, которое остается необработанным и которое завершило процесс. В качестве первого шага при определении того, что вызвало эту ошибку, отладите журналы приложения и файлы дампа. |
Дальнейшие действия
- Узнайте больше о диагностике других распространенных сценариев.
- Дополнительные сведения о журналах Azure Monitor и их возможностях см. в обзоре Azure Monitor.
- Узнайте больше об оповещениях журналов Azure Monitor, чтобы помочь в диагностике и обнаружении.
- Ознакомьтесь с функциями поиска по журналам и запросами , предлагаемыми в рамках журналов Azure Monitor.