2014-11-13 3 views
2

Скажем, у меня есть приложение Node.js, которое подключается к веб-серверу. В какой-то момент времени мне нужно закончить это приложение.Force process.exit() vs закрытие всех открытых ресурсов/сокетов вручную

Теперь у меня есть два варианта:

  • Просто запустите process.exit()
  • или закрытия соединения, очистки, а затем выход

Конечно, первый подход гораздо более грубой силы , но это еще не значит кодирование ;-).

Есть ли недостатки, о которых я должен знать, когда делаю это так? Другими словами: может ли это привести к не очищенным ресурсам, например, к открытым открытым сокетам (как на клиенте, так и на сервере)? Означает ли это, когда сервер очищает свои ресурсы для этого соединения, или это делается немедленно?

+1

AFAIK по-прежнему вызывает «чистое» завершение процесса узла, поэтому открытые ресурсы (файлы, сокеты) будут очищены до клиентской ОС, а клиентская ОС будет полностью закрывать TCP-соединения. Таким образом, пока сеть доставляет окончательные пакеты, не должно быть открытых сокетов, ожидающих таймаута с обеих сторон. Комментирование не отвечает, потому что я не уверен, и, может быть, в крайних случаях (многие соединения, ОС с голоду за ресурсы) это перестает быть правдой. –

ответ

2

я поставил себе тот же вопрос, когда пытаетесь решить, лучший способ обработки ошибок, и я foud очень полезно следующее:

  1. http://www.joyent.com/developers/node/design/errors

, в частности, в разделе "Лучший способ для восстановления после ошибок программиста - немедленно свернуть ".

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