๋๋ ์ ๋ฌ๋ฆฌ ์ ์ฅ์์ ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฐ๋ ์ ๊ตฌ์ฑ ํ์ผ์ ์ฌ์ฉํ๊ณ ์ ๋ฌ๋ฆฌ ์ฌ์์์ด ๋ฐ์ํ ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋๋๋ก ๋ก๊ทธ์ ์ค๋ฅ ๋ฉ์์ง ์์ด ์ ๋ฌ๋ฆฌ๋ฅผ ๋ค์ ์์ํ ํ ์์ ์ฒ๋ฆฌ๊ฐ ์๋์ผ๋ก ์ค์ง๋ฉ๋๋ค. ํ๋ก์ธ์ค๋ ํ๋ก์ธ์ค ๋ชฉ๋ก์ ๊ณ์ ํ์๋ฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ๋๋ ๋๋๋ก ํ๋ก์ธ์ค๊ฐ ๋ค์ ์์๋ ๋ ์๋ฌ๋ฆฌ๊ฐ ๊ฐ๋
์๊ฐ ๊ด๋ฆฌํ์ง ์๋ ์ถ๊ฐ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๊ณ ์ด๋ก ์ธํด ์ด๋ฌํ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ์ ์์๋์ต๋๋ค. ๊ทธ๋์ ๋ค์ ์์ํ ๋๋ง๋ค ps
์ถ๋ ฅ์ ์ฃผ์ ๊น๊ฒ ๊ด์ฐฐํ๊ณ kill์ ํตํด ์ถ๊ฐ ํ๋ก์ธ์ค๋ฅผ ์๋์ผ๋ก ์ฃฝ์ด๊ธฐ ์์ํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ค๋ ๊ทธ ์ง์ง ์ด์ ๋ฅผ ์ฐพ์ ๊ฒ ๊ฐ์์. 'stopwaitsecs' ์ต์ ์ ๊ธฐ๋ณธ ๊ด๋ฆฌ์ ๊ฐ์ 10์ด์ ๋๋ค. ์ด๊ฒ์ 10์ด ํ์ ์ ๋ฌ๋ฆฌ ํ๋ก์ธ์ค๊ฐ TERM ๋์ KILL ์ ํธ๋ก ์ข ๋ฃ๋จ์ ์๋ฏธํฉ๋๋ค. ์๋ฌ๋ฆฌ๋ ์ฃฝ์์ ๋นํ๋ ๊ฒ์ ์ซ์ดํ๊ณ ๊ทธ ๊ฒฝ์ฐ์ ์ถ๊ฐ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๋ ค๊ณ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฐ๋ผ์ ๋ชจ๋ Supervisord ์์ ๊ตฌ์ฑ ํ์ผ์ 'stopwaitsecs=600'๊ณผ ๊ฐ์ ๊ฒ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ข ๋ฃํ ๊ธฐํ๋ฅผ ์ป๊ธฐ ์ํด ๋ช ๋ถ์ ๊ธฐ๋ค๋ ธ์ต๋๋ค.") KILL ์ ํธ์ ๋ํ ์ ๋ฌ๋ฆฌ๋ ๋์์ ์กฐ์ฌํฉ๋๋ค. ๊ณผ์ ์ด ์ข ์ด์ํฉ๋๋ค.
KILL
์ ํธ๋ฅผ ์์ ํ ๋ ์์ฑ๋๋ ํ๋ก์ธ์ค๋ ์ค์ ๋ก ์ด์ํฉ๋๋ค. supervisord
์ธ๋ถ์์ ์ฌ์ฉ๋ ๋ ๊ทธ ๋์์ด ๋ณด์ด์ง ์์ผ๋ฏ๋ก ์๋ง๋ ์ด๊ฒ์ผ๋ก ์ธํด ๋ฐ์ํ ๊ฒ์
๋๊น?
setproctitle
๋ชจ๋์ ์ค์นํ๋ฉด ์
๋ฌ๋ฆฌ๋ ps
๋ชฉ๋ก์ ํ๋ก์ธ์ค ์ข
๋ฅ๋ฅผ ๋ณด๊ณ ํด์ผ ํฉ๋๋ค. ์ด๋ค ์ข
๋ฅ์ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๋์ง ์กฐ์ฌํ๊ธฐ ์ํด ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๊น?
( easy_install setproctitle
)
์๊ฐ ์ ํ์ 600
๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ฌดํ๋์ ๋ํ ์ค์ ์ด ์์ต๋๊น(๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ๋ฉด ๊ฒฝ๊ณ ๊ฐ ํ์๋ ์ ์์)? celeryd
๊ฐ TERM
(์ ํธ๋๋ ์ข
๋ฃ ์ ํธ)๋ฅผ ํตํด ์ข
๋ฃ๋๋ฉด ๋ฉ์์ง ์์ ์ ์ค์งํ๊ณ ํ์ฌ ์คํ ์ค์ธ ์์
์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ถ๋ถ์ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ค๊ฐ ์คํ ์ข
๋ฃ๋ ํ์ฉ๋์ง ์์ต๋๋ค.
ํ๋ก์ธ์ค ์์ฑ์ ๊ดํด์: setproctitle ๋ฐ ํ๋ก์ธ์ค ID๋ฅผ ๊ด์ฐฐํ๋ ๊ฒ์ด ๋์์ด ๋์์ต๋๋ค. ํ๋ก์ธ์ค ์์ฑ์ด ์๋๋๋ค. ์์ ํ๋ก์ธ์ค๊ฐ ์ข
๋ฃ๋ ๋ ์์
์ ํ๋ก์ธ์ค๋ ํ์ฑ ์ํ๋ก ์ ์ง๋ฉ๋๋ค.
์ด๊ฒ์ ์๋ ์ข
๋ฃ ๋ฐ ์ ๋ก ํ์์์์ ์ฌ์ฉํ ๊ฐ๋
์ ์ฌ์์ ์๋ฎฌ๋ ์ด์
์
๋๋ค.
4976 ? Ss 0:00 /usr/bin/python /usr/bin/supervisord --pidfile /var/run/supervisord.pid
5422 ? S 0:01 \_ [celerybeat] --schedule=/var/lib/celery/celerybeat-schedule-nadovmeste --loglevel=INFO
6101 ? Sl 0:00 \_ [celeryd.MainProcess] Running... (--loglevel=INFO)
6108 ? S 0:00 \_ [celeryd.PoolWorker-1]
nadovmeste:~# kill 6101 & kill -9 6101 &
์ถ์ -afx:
4976 ? Ss 0:00 /usr/bin/python /usr/bin/supervisord --pidfile /var/run/supervisord.pid
5422 ? S 0:01 \_ [celerybeat] --schedule=/var/lib/celery/celerybeat-schedule-nadovmeste --loglevel=INFO
6867 ? Sl 0:00 \_ [celeryd.MainProcess] Running... (--loglevel=INFO)
6875 ? S 0:00 \_ [celeryd.PoolWorker-1]
6108 ? S 0:00 [celeryd.PoolWorker-1]
kill
์ kill -9
์ฌ์ด์ ์ธ๊ณต ๋ ์ด์ค์์๋ง ์ด๊ฒ์ ์ฌํํ ์ ์์์ต๋๋ค. ๋๋๋ก ์์
์๊ฐ ์ ๋๋ก ์ฃฝ์์ ๋นํฉ๋๋ค. ์ฝ์์์ celeryd๋ฅผ ์์ํ ๋ ์ฌ์์ฐํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ๋ ๊ฐ๋
์๋ณ๋ก ๋ค๋ฅธ ๊ฒ ๊ฐ์ต๋๋ค.
๋ช ๋ฒ์ ์๋ ๋์ ์ฝ์ ์์ ์คํฌ๋ฆฝํธ๋ก ์ด๊ฒ์ ์ฌํํ ์ ์์์ต๋๋ค.
/home/nadovmeste/envs/nadovmeste/bin/python /home/nadovmeste/src/nadovmeste/manage.py celeryd -B --loglevel=INFO&
๊ทธ๋ฐ ๋ค์ ๋ค๋ฅธ ํฐ๋ฏธ๋ ์ธ์ ์์:
nadovmeste:~# ps -afx
6450 ? Ss 0:00 \_ sshd: root@pts/2
6452 pts/2 Ss+ 0:00 \_ -bash
9343 pts/2 Sl 0:00 \_ [celeryd.MainProcess] Running... (-B --loglevel=INFO)
9350 pts/2 S 0:00 \_ [celeryd.PoolWorker-2]
9355 pts/2 S 0:00 \_ [celerybeat]
nadovmeste:~# kill 9343 & kill -9 9343
nadovmeste:~# ps -afx
4526 ? Ss 0:00 \_ sshd: root@pts/1
4529 pts/1 Ss 0:00 | \_ -bash
9366 pts/1 R+ 0:00 | \_ ps -afx
6450 ? Ss 0:00 \_ sshd: root@pts/2
6452 pts/2 Ss+ 0:00 \_ -bash
...
9350 pts/2 S 0:00 [celeryd.PoolWorker-2]
9355 pts/2 S 0:00 [celerybeat]
Supervisord ๋ฌธ์์์ ๊ฒฝ๊ณ ์ ํจ๊ป ๋ฌดํ ์๊ฐ ์ด๊ณผ์ ๋ํ ํน๋ณํ ์ต์ ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒ์ด๋ผ๋ฉด ์๋ง๋ ๋งค์ฐ ํฐ ์ซ์๋ก ์ถฉ๋ถํ ๊ฒ์ ๋๋ค.
-B
์ต์
์ ์ฌ์ฉํ ํ์๋ง ์ฝ์ ์์ celeryd์ ๋ํ ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์์๊ธฐ ๋๋ฌธ์ celerybeat์ ๊ด๋ จ๋ ๊ฒ์ผ ์ ์์ต๋๋ค.
๋ก์ปฌ์์ ์ผ๋ถ ์ ๋ฌ๋ฆฌ ์์ ์ ํ ์คํธํ๊ณ -B ์ต์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ctrl-c๋ฅผ ์ฌ์ฉํ ๋ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
๋ก์ปฌ์์ ์ฌํํ ์ ์์ต๋๋ค. Btw, ๋ง์คํฐ ๋ธ๋์น๋ฅผ ์คํํ๊ณ ์์ต๋๊น? ์ข ๋ฃ๋ฅผ ๋ฉ์ถ ์ ์๋ ๋ฒ๊ทธ๋ฅผ ์์ ํ์ต๋๋ค. ์ด๊ฒ์ผ๋ก ํ ์คํธ ํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
์, ์ต์ ๋ง์คํฐ ๋ธ๋์น๋ฅผ ์คํํ๊ณ ์์ต๋๋ค. ๋ฒ๊ทธ ์์ ์ปค๋ฐ์ ๋ณด๊ณ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋์ง๋ง ์ ๊ฒฝ์ฐ์๋ ๋์์ด ๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ต์ ์ ๋ฌ๋ฆฌ๋ ๋๊ฐ์ด ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ธฐ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. ์ฆ์ ์ข ๋ฃ๋ก๋ง ํ์ธํฉ๋๋ค. ์ง๊ธ ๋ด ์์ ๊ฐ์ ์ ์์ต๋๋ค :) ctrl-c ๋ฌธ์ ๋ ๋ด ์ค์ ์ผ๋ก ์ฌํํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ฒ๊ทธ ๋ณด๊ณ ์๋ ๋จ์ํ๋์์ต๋๋ค. http://gist.github.com/401028 . ๊ฒฐ๊ณผ๋ ํญ์ ๋์ผํฉ๋๋ค(๊ฐ๋์ ์๋). ์ ๊ธฐ์ ์ธ ์์ ๊ณผ ๋น์ ๊ธฐ์ ์ธ ์์ ์ด ์์ต๋๋ค. ์์ ์ ๊ฐ๋จํ๊ณ ์๋ฃํ๋ ๋ฐ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง ์์ต๋๋ค. ๋ฉ์ธ ํ๋ก์ธ์ค๋ฅผ ์ฃฝ์ธ ํ ์์ ํ๋ก์ธ์ค๊ฐ ์ด์ ๋จ๋ ๊ฒ์ด ๋ฒ๊ทธ์ ๋๊น? ๊ทธ๋ ๋ค๋ฉด ์ฌํํ ์ ์๋ค๋ฉด ์ต์ํ์ ํ๋ก์ ํธ๋ฅผ ์ ๊ณตํ๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค.
celerybeat ์ข ๋ฃ ๋์์ ํฅ๋ฏธ๋กญ์ต๋๋ค. hang(?) celerybeat ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๋ฉด hang(?) ์์ ์ ํ๋ก์ธ์ค๋ ์ข ๋ฃ๋ฉ๋๋ค.
@kmike ์ฌ์ ํ ์์ ๋ช ๋ น์ผ๋ก ์ฌํํ ์ ์์ต๋๋ค. ๋ด๊ฐ OS X๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ผ ์๋ ์๊ณ , ์๋๋ฉด Python 2.5๋ฅผ ์คํ ์ค์ด๊ธฐ ๋๋ฌธ์ผ ์๋ ์์ต๋๋ค. (์ ๋ 2.6.1์ ์คํ ์ค์ ๋๋ค)
--loglevel=DEBUG?
๋ก ์คํํ ์ ์์ต๋๋ค. ์ค์ง ์์น์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
celerybeat ํ๋ก์ธ์ค๋ ๋ฉ์ธ ํ๋ก์ธ์ค์ ์ํด ์์๋๋ฏ๋ก ๋ฉ์ธ ํ๋ก์ธ์ค๊ฐ ๋๊ธฐ ์ค์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
celerybeat๊ฐ ๋๋จธ์ง ํ ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํ๊ธฐ ์ ์ ์ข
๋ฃํฉ๋๋ค.
๋ฉ์ธ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋์๋ค๊ณ ์๊ฐํ๋๋ฐ ํ๋ก์ธ์ค ๋ชฉ๋ก์ ํ์๋์ง ์์ต๋๋ค. ํ์ง๋ง ํ๋ก์ธ์ค ๊ด๋ฆฌ์ ๋ํ ๊ฒฝํ์ด ๋ง์ง ์์ต๋๋ค.
๋ด ์ค์ ์ Debian Lenny + python 2.5์ ๋๋ค.
--loglevel=DEBUG๋ก celeryd๋ฅผ ์คํํ๊ณ ๋ด ๋งฅ๋ถ์์ ์ฌํํ๋ ค๊ณ ํฉ๋๋ค.
ํ , ๋น์ ๋ง์ด ๋ง์์. ๋นํธ ํ๋ก์ธ์ค๊ฐ ํ ํ๋ก์ธ์ค์ ์์ ๊ถ์ ๊ฐ์ ธ์ค๋ ๊ฒ๊ณผ ๊ฑฐ์ ๊ฐ์ต๋๋ค.
๋ฐฉ๊ธ python 2.5๋ฅผ ์ฌ์ฉํ์ฌ Debian Lenny์์ ์ฌํํ๋ ค๊ณ ํ๊ณ ๋ฐ๋ก ์๋ํฉ๋๋ค.
TERM๊ณผ INT๋ก ์ฃฝ์ด๋ ค๊ณ ํ์ต๋๋ค.
๋์์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๊ฐ๋
์ ์๊ฐ ์ด๊ณผ์ ๋ฒ๊ทธ ์์ ์ปค๋ฐ์ผ๋ก ์ด๊ธฐ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋ค๊ณ ์๊ฐํฉ๋๋ค. kill -9
๋ช
๋ น์ ์ฌ์ฉํ๊ณ TERM ๋์ KILL ์ ํธ๋ฅผ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ ์๋ฎฌ๋ ์ด์
์ด ์๋ชป๋์์ต๋๋ค. TERM ์ ํธ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋๋ก ์ข
๋ฃ๋ฉ๋๋ค.
๊ฐ๋ ์๋ TERM ์ ํธ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋ชจ๋ ๊ฒ์ด ์ ์์ด์ด์ผ ํฉ๋๋ค.
ํ์ง๋ง ์กฐ๊ธ ๋๋ ค์ด ๊ฒ์ ์ด๊ธฐ ๋ฒ๊ทธ๊ฐ ์กฐ์ฌ๋์ง ์์๋ค๋ ๊ฒ์ ๋๋ค. ์ฌํํด๋ณด๊ณ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
์! ์ ๋ง ์ฃ์กํฉ๋๋ค. ๋๋ ๋ฌธ์ ๋ฅผ ์ถฉ๋ถํ ์ฃผ์ ๊น๊ฒ ์ฝ์ง ์์๋ค. ๋ค! SIGKILL๋ก ์ฃฝ์ผ ๋ ์ผ์ด๋๋ ์ผ์ ๋๋ค. 9 ์ ํธ๋ฅผ ์ก์ ์ ์์ผ๋ฏ๋ก ์ด AFAIK์ ๋ํด ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ผ์ ์์ต๋๋ค.
Celery ์์
์๋ฅผ ์ข
๋ฃํ๋ ๋ฐ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ stopwaitsecs
$ ์ ๋๋ฆฌ๊ธฐ ์ ์ stopasgroup=true
์ค์ ์ ์๋ํด ๋ณผ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
Celery ์์ ์๋ฅผ ์ข ๋ฃํ๋ ๋ฐ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ
stopwaitsecs
$ ์ ๋๋ฆฌ๊ธฐ ์ ์stopasgroup=true
์ค์ ์ ์๋ํด ๋ณผ ์ ์์ต๋๋ค.