Предпосылки / Проблема
Возникла странная проблема с ведением блога Ghost в Azure. Некоторое время сайт работает нормально, но время от времени я получаю сообщение об ошибке 500 без дополнительной информации. Следующий запрос всегда оказывается успешным (пока что в тестах).
Кажется, что ошибка возникает после периода бездействия. Поскольку в настоящее время я только настраиваюсь, я использую экземпляр Azure Free, поэтому мне интересно, не вызывает ли это какая-то экономия ресурсов за кулисами (что будет облегчено при обновлении).
Есть идеи, что может вызвать эту проблему? Я как бы не понимаю, с чего начать, поскольку журналы не обязательно помогают мне в этом случае. Я новичок в NodeJS (и nodeJS в Azure), и поскольку это мой первый набег, любые советы / рекомендации о том, где искать, также будут полезны.
Некоторые конкретные вопросы:
- Когда я получаю такую ошибку, могу ли я куда-нибудь посмотреть какие-либо выходные данные, или есть ли гарантия, что Node на самом деле что-то не выводил?
- Имеется ли в бесплатных экземплярах Azure какое-то сохранение ресурсов, которое может привести к закрытию приложения (и, таким образом, я могу видеть эти ошибки только после периода бездействия)?
Полная ошибка
Полный текст ошибки ниже (по этой причине я включил отладку):
iisnode обнаружил ошибку при обработке запроса.
HRESULT: 0x2
Статус HTTP: 500
Причина HTTP: внутренняя ошибка сервера
Вы получаете этот ответ HTTP 200, потому что для параметра конфигурации system.webServer/iisnode/@devErrorsEnabled установлено значение «true».
Помимо журнала stdout и stderr процесса node.exe, рассмотрите возможность использования отладки и трассировки ETW для дальнейшей диагностики проблемы.
Процесс node.exe не записал никакой информации в stderr или iisnode не смог получить эту информацию. Частая причина заключается в том, что модуль iisnode не может создать файл журнала для захвата вывода stdout и stderr из node.exe. Убедитесь, что удостоверение пула приложений IIS, в котором запущено приложение node.js, имеет разрешения на чтение и запись в каталог на сервере, где находится приложение node.js. В качестве альтернативы вы можете отключить ведение журнала, установив для элемента system.webServer/iisnode/@loggingEnabled в web.config значение false.