2015-02-10 5 views
2

В приложении Node.js, что происходит с другими запросами, когда один поток генерирует ошибку внутреннего сервера?Node.js - цикл событий и ошибки внутреннего сервера

Поскольку node.js обрабатывает каждый запрос в одном процессе, мне интересно, что произойдет.

+0

Если вы каким-то образом не справитесь с внутренней ошибкой, другие запросы вернут 500, потому что процесс узла будет завершен ... – James

+0

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

+0

это не так: поскольку node.js обрабатывает каждый запрос в одном процессе, мне интересно, что произойдет. Процесс запуска узла 1 (за исключением кластеризации) – jmingov

ответ

0

Node.js - это однопроцессорный процесс, однако каждый запрос обрабатывается как дескриптор сокета, а не его собственный поток. Внутренний узел ожидает ввода-вывода в каждом открытом сокете. Если по какой-либо причине запрос генерирует ошибку внутреннего сервера, вы просто возвращаете ответ 500.

Если есть неперехваченное исключение (немного отличное от внутренней ошибки сервера, но возможно, о чем вы спрашиваете), это будет влияют на весь процесс. У вас может быть встроенный конечный обработчик исключений, но он должен использоваться для очистки процесса и перезапуска его. Все исключения должны обрабатываться чисто в коде, вы не должны полагаться на слушателя «uncaughtException», чтобы восстановить процесс и продолжить выполнение.

Смежные вопросы