Мой экземпляр Azure WebApps (работающий на Tomcat, Linux) хорошо работал в течение 9 месяцев. Недавно произошел простой на пару часов, который, по словам инженера службы поддержки Microsoft, был вызван следующими причинами:
перезагрузка файлового сервера хранилища на этом экземпляре, и веб-приложение не было можно было запустить после того, как вы сделали ручной перезапуск, веб-приложение застрял. Чтобы предупредить этого ребенка о проблемах, вы можете придерживаться лучших практик
- Всегда используйте 2 экземпляра
Эти экземпляры находятся в разных обновлять домены и, следовательно, не будут обновляться одновременно. В то время как один рабочий экземпляр обновляется, другой все еще активен обслуживать веб-запросы. Веб-приложение в настоящее время настроено для работы только на один экземпляр. Поскольку у вас только один экземпляр, вы можете ожидать простоя потому что при обновлении платформы службы приложений экземпляр на которое запущено в вашем веб-приложении, будет обновлено. Таким образом, ваша сеть процесс приложения будет перезапущен, и в нем будет время простоя.
- Используйте Проверка работоспособности
Эта функция автоматически удаляет неисправный экземпляр от вращения, тем самым повышая доступность. Эта функция будет пинговать указанный путь проверки работоспособности на всех экземплярах вашего веб-приложения каждые 2 минут. Если экземпляр не отвечает в течение 10 минут (5 пингов), экземпляр определен как неисправный, и наша служба будет остановлена маршрутизация запросов к нему. Настоятельно рекомендуется для производственных приложений. использовать эту функцию и минимизировать любое возможное время простоя, вызванное неисправному экземпляру. Примечание. Функция проверки работоспособности работает только для приложения, размещенные более чем на одном экземпляре. Для большего информацию проверьте в документации ниже. https://github.com/projectkudu/kudu/wiki/Health-Check- (Preview)
Итак, я понимаю, что могу избежать подобных редких событий, следуя лучшим практикам. Однако мне интересно, есть ли что-то еще, потому что проблема в том, что с тех пор всякий раз, когда я перезапускаю WebApp (через портал Azure), у него простаивает от 2 до 5 часов, после чего оно автоматически устраняется.
Инженер службы поддержки Microsoft ответил, что это произошло из-за переполнения временного каталога.
Использование временного файлового пространства почти исчерпано. Приложение может испытывать проблемы со стабильностью и производительностью.
Приложения используют временные файлы во время обработки в памяти, загрузка контента из вызовов API и т. д. Если код приложения не очищается, временное пространство используется.
Рекомендуемое действие Для постоянного исправления просмотрите и проанализируйте каждый приложение, размещенное в этом плане службы приложений, и определить приложения, которые не выполняют надлежащих процедур очистки.
Я просмотрел каталог \ tmp, и он был практически пуст. Также предполагается, что перезапуск WebApp очистит временный каталог, поэтому я не понимаю, почему у меня должны возникать проблемы именно после перезапуска.
Запрос в службу поддержки Microsoft все еще открыт. Я надеюсь изучить другие возможности решения проблемы - так как это продолжается уже две недели.
Вот части журналов, которые могут иметь отношение (пока WebApp отключен) с запутанными идентификационными данными.
Docker
2020-09-22T16: 09: 57.514Z ОШИБКА - Контейнер examplewebapp__ для сайта examplewebapp__a81a не начать в пределах ожидаемого срока. Истекшее время = 600,9031978 сек. 2020-09-22T16: 09: 57.515Z ОШИБКА - Контейнер examplewebapp__ не ответил на HTTP-запросы на порт: 80, неудачный запуск сайта. См. Журналы контейнера для отладки. 2020-09-22T16: 09: 57.544Z INFO - Пример остановки сайтаwebapp__a81a потому что это не удалось во время запуска. 2020-09-22T16: 14: 53.608Z ИНФОРМАЦИЯ - Получение образа из Docker-хаба: mcr.microsoft.com/azure-app-service/tomcat:9.0-java11_200319054033 2020-09-22T16: 14: 53.687Z ИНФОРМАЦИЯ - 9.0-java11_200319054033 Извлечение из azure-app-service / tomcat 2020-09-22T16: 14: 53.720Z ИНФОРМАЦИЯ - Дайджест: sha256: c2c5 ....... 73d96 2020-09-22T16: 14: 53.722Z ИНФОРМАЦИЯ - Статус: Изображение актуально для mcr.microsoft.com/azure-app-service/tomcat:9.0-java11_200319054033 2020-09-22T16: 14: 53.726Z ИНФОРМАЦИЯ - Получение изображения выполнено успешно, затраченное время: 0 Минуты и 0 секунд 2020-09-22T16: 14: 53.825Z INFO - Начало контейнер для сайта 2020-09-22T16: 14: 53.825Z INFO - docker run -d -p 6807: 80 --name examplewebapp__aetete -e WEBSITE_SITE_NAME = exampleWebApp -e WEBSITE_AUTH_ENABLED = Ложь -e WEBSITE_ROLE_INSTANCE_ID = 0 -e WEBSITE_HOSTNAME = examplewebapp.azurewebsites.net -e WEBSITE_INSTANCE_ID = dgsgdhs ... sdshsd -e HTTP_LOGGING_ENABLED = 1 mcr.microsoft.com/azure-app-service/tomcat:9.0-java11_200319054033[1215 impression2020-09-22T16:14:56.980Z INFO - Инициирование запроса на прогрев для контейнер examplewebapp__aetete для сайта examplewebapp__a81a 2020-09-22T16: 15: 17.526Z ИНФОРМАЦИЯ -Жду ответа на разминку запрос контейнера examplewebapp__aetete. Затраченное время = 20,5455075 sec 2020-09-22T16: 15: 33.144Z ИНФОРМАЦИЯ - Ожидание ответа на разминку запрос контейнера examplewebapp__aetete. Затраченное время = 36,1635991 sec 2020-09-22T16: 15: 54.629Z ИНФОРМАЦИЯ - Ожидание ответа на разминку запрос контейнера examplewebapp__aetete. Затраченное время = 57,6488951 sec 2020-09-22T16: 16: 09.914Z INFO - Ожидание ответа на разминку запрос контейнера examplewebapp__aetete. Затраченное время = 72,9343365 sec 2020-09-22T16: 16: 25.080Z INFO - Ожидание ответа на разминку запрос контейнера examplewebapp__aetete. Затраченное время = 88,1001723 sec 2020-09-22T16: 16: 40.281Z INFO - Ожидание ответа на разминку запрос контейнера examplewebapp__aetete. Прошедшее время = 103,3011586 сек
Default_Docker
2020-09-22T11: 45: 17.432527708Z / | / / | | / | | / \ / 2020-09-22T11: 45: 17.432531708Z _ | __ / _____ __ / | | ___> 2020-09-22T11: 45: 17.432535708Z / / / 2020-09-22T11: 45: 17.432539208Z A P P S E R V I C E O N L I N U X 2020-09-22T11: 45: 17.432542708Z 2020-09-22T11: 45: 17.432562008Z Документация: http://aka.ms/webapp-linux 2020-09-22T11: 45: 17.432565208Z 2020-09-22T11: 45: 17.432568708Z ПРИМЕЧАНИЕ : Никакие файлы или системные изменения вне / home не сохранятся после текущего сеанса вашего приложения. / home - это ваше приложение постоянное хранилище и используется всеми экземплярами сервера. 2020-09-22T11: 45: 17.432573808Z 2020-09-22T11: 45: 17.432576808Z 2020-09-22T11: 45: 17.432836008Z Настройка openrc ... 2020-09-22T11: 45: 20.011688823Z * Зависимости службы кэширования ... [ ок] 2020-09-22T11: 45: 20.040479470Z Обновление / etc / ssh / sshd_config до используйте ПОРТ 2222 2020-09-22T11: 45: 20.056556396Z Запуск службы ssh ... 2020-09-22T11: 45: 23.318735610Z ssh-keygen: создание новых ключей хоста: RSA DSA ECDSA ED25519 2020-09-22T11: 45: 27.654655866Z * Запуск sshd ... [ok] 2020-09-22T11: 45: 27.675340497Z ## Печать информации о сборке ... 2020-09-22T11: 45: 27.685373113Z
ПАКЕТ | ВЕРСИЯ | COMMIT 2020-09-22T11: 45: 27.685419013Z
Microsoft.AppService.EasyAuthExtensionsJava |
1.0.011720002-alpha-793ad718 | 793ad718 2020-09-22T11: 45: 27.685426413Z Microsoft.AppService.WebsitesExtensionsJava |
1.0.011730003-alpha-53ae38d3 | 53ae38d3 2020-09-22T11: 45: 27.685430813Z себя | 1.0.011730002-alpha-c6f00046 | c6f00046 2020-09-22T11: 45: 27.687085515Z ## Готово, печать информации о сборке.2020-09-22T11: 55: 23.212406842Z _____
2020-09-22T11: 55: 23.212435742Z / _ \ __________ _________ ____
2020-09-22T11: 55: 23.212440842Z / / \ ___ / | _ __ _ / __ \ 2020-09-22T11: 55: 23.212444742Z / | / / | | / | | / \ / 2020-09-22T11: 55: 23.212448142Z _ | __ / _____ _ / | | ___>
Следующая информация получена из обращения в службу поддержки Microsoft.
Причина, по которой это происходило, заключалась в том, что временное хранилище файлов было израсходовано. Для P1V2 Linux вы получаете 35 ГБ временного хранилища файлов, а для P2V2 Linux — 69 ГБ временного хранилища файлов.
Вы можете проверить, сколько использует ваше приложение, перейдя в «Диагностика и решение проблем», а затем выбрав «Использование временных файлов в рабочих процессах».
Обратите внимание, что Microsoft не поддерживает фактический доступ к этим временным файлам, ни удалять их, кроме как путем обновления вашего экземпляра (например, с P1V2 до P2V2), ожидания 15 минут, а затем его снижения.
Обратите внимание, что необходимо подождать 15 минут, потому что в противном случае вы рискуете вернуться к своему ранее существовавшему экземпляру, но без его форматирования.
Обратите внимание, что инженер службы поддержки Microsoft внес следующие дополнительные изменения (я не знаю, были ли они необходимы для решения проблемы):
Остановил слот развертывания, который я использовал
Добавлен параметр конфигурации слота приложения WEBSITES_CONTAINER_START_TIME_LIMIT = 1800
Версия веб-сервера Java изменена с 9.0 на 9.0.20
Удалены развертывания, перейдя в /home/deployments и выполнив
rm -rf *
См. этот вопрос дополнительные сведения о временных файлах Azure.Обратите внимание, что решение для их просмотра не работает для веб-приложений Azure для Linux
.