/etc/init.d/clamd start
错误:
[FAILED] log gives ERROR: daemonize() failed: Cannot Allocate Memory
上Cent OS
total Mem: 510876kb
/etc/init.d/clamd start
在/var/log/clamav
ERROR: daemonize() failed: Cannot Allocate Memory
?
这是一个可以解决的问题吗?
我以为Clamd
只需要20 - 40 mb
说Memory Free: 273844k
strace 的结果:
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], 0) = 1658
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
waitpid(-1, 0xbff84a2c, WNOHANG) = -1 ECHILD (No child processes)
sigreturn() = ? (mask now [])
rt_sigaction(SIGINT, {SIG_DFL, [], 0}, {0x80810f0, [], 0}, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
read(255, "", 1694) = 0
exit_group(1) = ?
strace -f 的结果:
strace -f -o /tmp/clamd.txt service clamd start
几乎相同,我在寻找某种错误吗?
我也遇到了同样的问题。
我观察到它
clamd
在内存中一次又一次地增长,然后因错误而崩溃:我观察到
clamd
内存增长到532 MB我认为 532 MB 会很紧,但我仍然可以放入小型服务器
一直都知道它
clamd
会消耗很多内存,但它似乎随着时间的推移变得越来越大。所以我想知道什么会消耗这么多内存并用
strace
.我发现它实际上正在将所有数据库文件读入内存,因为它在其日志中声明
Reading databases from /var/lib/clamav
并创建了一个内存索引6538218 signatures
:在将所有病毒定义读入内存后,它最终会尝试
fork
尝试克隆 532 MB 内存索引的子进程所以实际上在启动的那一刻,它会消耗双倍的内存,使其成为内存索引。
现在为了能够启动和运行这个服务,我至少需要创建一个交换分区来克服这个启动序列。
正如其他人所评论的那样,增加系统内存可以帮助您克服这种启动内存增加。
我也遇到过同样的问题,发现像这个人一样
saslauthd
占用了很多内存。问题可能是内存泄漏,此处描述了可能的修复方法:https ://www.howtoforge.com/community/threads/saslauthd-memory-leak-fix.52750/
尝试了修复,但我无法确认,因为问题(如果仍然存在)不会在几周后出现。