Поскольку ОП, похоже, оценил комментарий, я поместил его в ответ в надежде, что он поможет другим пользователям.
Мне кажется, проблема связана с тем, что многие дескрипторы используются при вызове writeFileSync
. Ссылка, размещенная в вопросе, похоже, тоже подтверждает эту идею.
На самом деле, я все еще пытаюсь выяснить, существует ли способ узнать, когда запись фактически завершена под капотом, не только с точки зрения nodejs. Возможно, этот параметр может помочь, но я предполагаю, что он страдает от той же проблемы.
В любом случае, можно обойти эту проблему, внедрив пул писателей с очередью, в которую помещаются его запросы на запись.
Плюс в том, что количество открытых дескрипторов можно держать под контролем. На самом деле не совсем из-за проблемы, упомянутой в ссылке, опубликованной ОП, но, конечно, можно избежать использования всех ресурсов системы.
С другой стороны, к сожалению, существует проблема, заключающаяся в том, что это решение имеет тенденцию занимать гораздо больше памяти (поскольку на самом деле человек оставляет там свои документы, ожидая свободного работника).
Конечно, это может быть подходящим решением для всплеска запросов, разделенных во времени, но, возможно, оно не подходит для фиксированных нагрузок, постоянных во времени.
person
skypjack
schedule
19.11.2015
writeFileSync
? Я имею в виду, это вы заканчиваете дескрипторы? В этом случае вы можете рассмотреть возможность реализации пула писателей с очередью для размещения ваших запросов на запись, даже если это имеет проблему, которая имеет тенденцию занимать больше памяти (поскольку вы паркуете там свои исходящиеdoc
, которые ждутworker
). - person skypjack   schedule 19.10.2015If you want to open a file for synchronous IO, you'll have to use the lower level fs functions that Node offers such as fs.open() and fs.fsync().
, разве этого недостаточно? - person dandavis   schedule 20.10.2015writeFileSync
, отбросив исходный и позволив ему работать асинхронно, а затем выполнить плавную миграцию во времени и откат этой функции после ее выполнения. - person skypjack   schedule 22.10.2015