Właśnie przejrzałem ten problem.
Problem z samym użyciem process.exit()
jest to, że program, nad którym pracuję, tworzył uchwyty, ale nigdy ich nie niszczył.
Przetwarzał katalog i umieszczał dane w orientdb .
więc niektóre z rzeczy, których się nauczyłem, to to, że połączenia z bazą danych muszą zostać zamknięte przed pozbyciem się odniesienia. I ten process.exit()
nie rozwiązuje wszystkich spraw.
Kiedy mój projekt przetworzył 2000 plików. Zmniejszyłoby się do około 500 pozostałych, a dodatkowe uchwyty wypełniłyby dostępną pamięć roboczą. Co oznacza, że nie będzie w stanie kontynuować. Dlatego nigdy nie docierasz do process.exit
na końcu.
Z drugiej strony, jeśli zamkniesz elementy, które żądają, aby aplikacja pozostała otwarta, możesz rozwiązać problem u jego źródła.
Dwie „nieudokumentowane funkcje”, z których mogłem korzystać, to
process._getActiveHandles();
process._getActiveRequests();
Nie jestem pewien, jakie inne funkcje pomogą w debugowaniu tego typu problemów, ale te były niesamowite.
Zwracają one tablicę i za pomocą tych metod możesz określić, co dzieje się w Twoim procesie.
Mam tylko nadzieję, że pomoże to każdemu, kto natknie się na ten post.