У меня проблемы с Upstart.
Я пытаюсь запустить Transmission-Daemon (клиент BitTorrent) с ограничением на максимальный размер резидентного набора ( rss ).
Это файл /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
Как видите, я добавил предел ( rss должен быть выражен в КиБах, если я не ошибаюсь), просто поверх сценария.
Когда я запускаю службу с sudo service transmission-daemon start
, я вижу с top
, что один процесс-демон передачи использует намного больше резидентной памяти, чем предел, который я установил выше, и насыщает всю доступную память.
Обратите внимание, что это не работает, даже если я использую немые ограничения, такие как limit rss 1 2
.
ОБНОВЛЕНИЕ: Кажется, что правильная единица измерения - это байты, а не килобайты или килобайты. Я пытался установить 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
Только для справки OP решила его проблему при помощи байтов, не килобайтов.