Демон с Clojure / JVM - PullRequest
       22

Демон с Clojure / JVM

4 голосов
/ 29 мая 2010

Мне бы хотелось, чтобы на маленьком сервере работал небольшой (не слишком много) демон, который следил за каталогом, в который добавлялись новые файлы (и любые каталоги в основном), и вызывал другую программу Clojure. иметь дело с этим новым файлом.

В идеале каждый файл должен быть добавлен в очередь (список, представленный ref в Clojure?), И основной процесс будет заботиться об этих файлах в очереди на основе FIFO.

Мой вопрос таков: слишком ли много времени у JVM запускает эта маленькая программа? И есть ли у вас какие-либо предложения относительно того, как это сделать?

Большое спасибо!

РЕДАКТИРОВАТЬ: Еще один вопрос, который я должен задать: должен ли я запускать его как свой собственный экземпляр (используя меньше памяти) и запускать новую JVM при просмотре файла, или иметь на той же JVM код Clojure для обработки файл?

1 Ответ

5 голосов
/ 29 мая 2010

Пока все работает нормально и нет утечек памяти, все должно быть в порядке.

Исходя из терминологии демона, я понял, что это клон Unix, и в этом случае лучше всего запускать его из скрипта инициализации или из скрипта rc.local. К сожалению, детали отличаются от ОС к ОС, чтобы быть более конкретными.

Ограничьте память, используя -Xmx = 64m или что-то еще, чтобы убедиться, что она не сработает, прежде чем отключать остальные службы. Поиграйте немного с номером, чтобы найти самый низкий надежный размер.

Кроме того, поскольку clojures претендует на славу - это способность справляться с параллелизмом, имеет смысл запускать только одну JVM со всеми функциями, выполняющимися на нем в нескольких потоках. Затраты на порождение новых процессов уже очень велики, и если это JVM, которая должна JIT и подогревать управление памятью, то вдвойне. На машине с ограниченными ресурсами может возникнуть проблема. а на машине, богатой ресурсами, это пустая трата времени.

Я всегда обнаруживал, что JVM не предназначена для быстрого запуска чего-либо вроде скрипта и выхода из него снова. Это действительно не сделано для этого случая использования, по моему мнению .

...