我在使用 Upstart 时遇到了问题。
我正在尝试启动传输守护进程(BitTorrent 客户端)的最大驻留集大小有限制(订阅)。
这是/etc/init/transmission-daemon.conf
文件:
start on (filesystem and net-device-up IFACE=lo)
stop on runlevel [!2345]
# give time to send info to trackers
kill timeout 30
limit rss 1024 2048
setuid debian-transmission
setgid debian-transmission
respawn
pre-start script
# stop job from continuing if no config file found for daemon
[ ! -f /etc/default/transmission-daemon ] && { stop; exit 0; }
# source the config file
. /etc/default/transmission-daemon
# stop job from continuing if admin has not enabled service in
# config file.
[ "$ENABLE_DAEMON" != 0 ] || { stop; exit 0; }
end script
script
. /etc/default/transmission-daemon
exec /usr/bin/transmission-daemon -f $OPTIONS
end script
如你所见,我添加了限制(订阅如果我没记错的话,应该以 KiB 来表示)就在脚本的顶部。
当我使用 运行服务时sudo service transmission-daemon start
,我可以看到top
单个传输守护进程使用的驻留内存远远超过我上面设置的限制,并且饱和了所有可用内存。
请注意,即使我使用诸如这样的愚蠢限制,这也不起作用limit rss 1 2
。
更新:似乎正确的单位是字节,而不是 KiB 或 KB。我尝试设置limit as 268435456 536870912
。据我所知,该过程现在不会超出软限制。不幸的是,当接近该限制时,它会直接进入 SEGFAULT。
这是 dmesg 的输出
[24165656.190272] transmission-da[3488]: segfault at 0 ip 00007ffad86602f6 sp 00007ffad203ea00 error 6 in transmission-daemon[7ffad863b000+75000]
[24165656.428762] init: transmission-daemon main process (3486) killed by SEGV signal
[24165656.428790] init: transmission-daemon main process ended, respawning
答案1
仅供记录,OP 使用字节而不是千字节来解决他的问题。