gpt4 book ai didi

jvm - 使用 Clojure/JVM 的守护进程

转载 作者:行者123 更新时间:2023-12-01 00:02:08 24 4
gpt4 key购买 nike

我想在一个小服务器上运行一个小的(不要做太多)守护进程,观察添加到其中的新文件的目录(以及主目录中的任何目录),并调用另一个 Clojure 程序来处理那个新文件。

理想情况下,每个文件都会被添加到一个队列中(在 Clojure 中由 ref 表示的列表?)并且主进程将在 FIFO 的基础上处理队列中的这些文件。

我的问题是:让 JVM 一直运行这个小程序是否会占用太多资源?你对如何做这件事有什么建议吗?

非常感谢!

编辑:我应该问的另一个问题:我应该将它作为它自己的实例运行(使用更少的内存)并让它在看到文件时启动一个新的 JVM,还是将它与将处理文件的 Clojure 代码放在同一个 JVM 上?

最佳答案

只要它现在运行良好并且没有内存泄漏,它应该没问题。

从守护进程的术语来看,我认为它是在 unix 克隆上,在这种情况下,最好从 init 脚本或 rc.local 脚本启动它。不幸的是,细节因操作系统而异,更具体。

使用 -Xmx=64m 或其他方法限制内存以确保它在关闭其余服务之前失败。稍微玩一下数字以找到最低的可靠大小。

此外,由于 clojures 因其处理并发性的能力而声名鹊起,因此仅运行一个 JVM 并在多个线程中运行所有功能是很有意义的。产生新进程的开销已经非常大,如果它是一个需要 JIT 和预热其内存管理的 JVM,则加倍如此。在资源受限的机器上可能会出现问题。在资源丰富的机器上,这是一种浪费。

我总是发现 JVM 不能快速运行脚本之类的东西并再次退出。在我看来,它真的不是为那个用例制作的
.

关于jvm - 使用 Clojure/JVM 的守护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2933280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com