Потратив много часов на поиск ошибки, да, закрытие всех файловых дескрипторов может вызвать проблемы.
Вопрос в том, сколько существует файловых дескрипторов?
1024 раньше был очень распространенным, и 1024 - это не совсем необоснованное количество файловых дескрипторов, которые нужно закрывать. Поскольку большинство из них закрыты, это просто проверка байта в памяти.
Моя операционная система поставляется с значением по умолчанию 1 048 576. На этом (предположительно медленном) сервере, очевидно, может потребоваться более 4,7 микросекунд, чтобы попытаться закрыть дескриптор файла. Это привело к таймауту (5 секунд). И невозможно сказать, насколько высоко будет расти число. По крайней мере, установите (разумный) верхний предел.
/ proc / self / fd не идеален, но такие ошибки очень сложно найти.