我正在为Perl的时事通讯写一个守护进程。
守护程序将在服务器上全天候运行。它几乎一直都与postgresql数据库有一个活动的连接。
我没有那么多Perl的经验,所以如果你们中的一些人可以分享以下信息,我会很高兴:
如何限制RAM。我不想离开公羊。正如我所说,这个程序将一直作为守护进程运行而不会被停止。
写这样的守护进程时我应该注意什么?
答案 0 :(得分:5)
就SQL连接而言 - 确保不泄漏内存。从查询中检索所需的最少量数据,并确保存储数据的数据结构立即超出范围,以便垃圾收集器可以回收它们
请注意,您可能无法控制内存泄漏(例如,在Postgresql连接代码中)。众所周知,这种情况会发生。针对该问题的最佳解决方案(缺少精确的内存分析和修复底层库中的泄漏)是为了让你的守护进程拉出凤凰 - 停止正在做的事情,并exec()
自己的新副本。
就编写Perl守护进程而言,有些资源:
Proc::Daemon
- 将Perl程序作为守护进程运行。答案 1 :(得分:2)
关于#1:Perl被垃圾收集。
有效的意思是你应该确保在完成所有数据引用后清理它们,从而允许垃圾收集器运行。
http://perldoc.perl.org/perlobj.html#Two-Phased-Garbage-Collection
答案 2 :(得分:1)
需要注意的一件事是内存泄漏。 SO上已经有nice thread about memory leaks in Perl了。