Celery: 미리 포크된 μž‘μ—…μž ν”„λ‘œμ„ΈμŠ€κ°€ TERM μ‹ ν˜Έλ₯Ό λ¬΄μ‹œν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

에 λ§Œλ“  2018λ…„ 06μ›” 04일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: celery/celery

일반적인

영ν–₯을 λ°›λŠ” 버전: μ΅œμ‹ (4.1.1)

μ˜ˆμƒλ˜λŠ” 행동

prefork된 μž‘μ—…μžλŠ” sigterm μ‹ ν˜Έλ₯Ό λ¬΄μ‹œν•©λ‹ˆλ‹€. μ›œ μ’…λ£Œλ₯Ό λ‹΄λ‹Ήν•˜λŠ” μƒμœ„ ν”„λ‘œμ„ΈμŠ€λ§Œ 이에 λ°˜μ‘ν•˜κ³  ν•˜μœ„ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ •μƒμ μœΌλ‘œ μ’…λ£Œν•©λ‹ˆλ‹€.

ν˜„μž¬ 행동

prefork된 μž‘μ—…μž ν”„λ‘œμ„ΈμŠ€κ°€ sigterm을 λ°›μœΌλ©΄ μ¦‰μ‹œ μ’…λ£Œλ©λ‹ˆλ‹€(예: kill <pid> ).

celery_1        | [2018-06-04 09:19:57,376: ERROR/MainProcess] Process 'ForkPoolWorker-2' pid:26 exited with 'signal 15 (SIGTERM)'

sigterm이 μƒμœ„ μž‘μ—…μž ν”„λ‘œμ„ΈμŠ€μ— λ„λ‹¬ν•˜λ©΄ μ›œ μ’…λ£Œκ°€ μˆ˜ν–‰λ©λ‹ˆλ‹€. κ·Έ λ™μ•ˆ prefork된 μž‘μ—…μžλ„ κΈ°κ°„ μ‹ ν˜Έλ₯Ό λ°›μœΌλ©΄ μž‘μ—…μ΄ μ’…λ£Œλ©λ‹ˆλ‹€.

κ΄€λ ¨μ„±

init μ‹œμŠ€ν…œμ΄ μžˆλŠ” 도컀 μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ…€λŸ¬λ¦¬λ₯Ό μ μ ˆν•˜κ²Œ μ’…λ£Œν•˜λŠ” 방법을 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.
(메일링 리슀트 μ°Έμ‘°: https://groups.google.com/forum/#!topic/celery-users/9UF_VyzRt8Q). signalμ΄λΌλŠ” μš©μ–΄κ°€ λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€μ—λ§Œ λ„λ‹¬ν•˜κ³  prefork된 μž‘μ—…μžμ—κ²ŒλŠ” λ„λ‹¬ν•˜μ§€ μ•Šλ„λ‘ ν•΄μ•Ό ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. 이것은 μ—¬λŸ¬ μ…€λŸ¬λ¦¬ μΈμŠ€ν„΄μŠ€(예: λΉ„νŠΈ 및 두 개의 λŒ€κΈ°μ—΄)둜 bash 슀크립트λ₯Ό μ‹€ν–‰ν•  λ•Œ 맀우 μ–΄λ €μš΄ 것 κ°™μŠ΅λ‹ˆλ‹€.

κ°€λŠ₯ν•œ ν•΄κ²°μ±…

prefork된 μž‘μ—…μž ν”„λ‘œμ„ΈμŠ€κ°€ sigterm을 λ¬΄μ‹œν•˜λ„λ‘ ν—ˆμš©ν•˜λŠ” κΈ°λŠ₯을 μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

Deployment Prefork Workers Pool

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

도움이 λ˜λŠ” μ œμ•ˆμ„ ν•΄μ£Όμ‹  @georgepsarakis 와 @xirdneh μ—κ²Œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. λ‚˜λŠ” κ°λ…μžμ™€ ν•¨κ»˜ μž‘μ—… 섀정을 얻을 수 μžˆμ—ˆλ‹€! πŸŽ‰
μ»¨ν…Œμ΄λ„ˆλ‹Ή μž‘μ—…μžκ°€ 1λͺ…인 것도 맀우 쒋은 μ œμ•ˆμž…λ‹ˆλ‹€! 정말 κ°μ‚¬ν•©λ‹ˆλ‹€!

λͺ¨λ“  3 λŒ“κΈ€

Docker μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œ μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹œμž‘ν•  λ•Œ μ μ ˆν•œ μ‹ ν˜Έ μ „νŒŒλ₯Ό 가지렀면 μ•„λ§ˆλ„ supervisord 와 같은 ν”„λ‘œμ„ΈμŠ€ κ΄€λ¦¬μžκ°€ ν•„μš”ν•  κ²ƒμž…λ‹ˆλ‹€.

μžμ„Έν•œ λ‚΄μš©μ€ 도컀가 μž‘μ—…μ„ μ€‘μ§€ν•˜λŠ” 방법에 λŒ€ν•œ κ°œμš”μž…λ‹ˆλ‹€. https://www.ctl.io/developers/blog/post/gracefully-stopping-docker-containers/#docker -stop

λ˜ν•œ 이미 dockerλ₯Ό μ‚¬μš©ν•˜κ³  μžˆλ‹€λ©΄ μ»¨ν…Œμ΄λ„ˆλ‹Ή ν•˜λ‚˜μ˜ μž‘μ—…μžλ₯Ό μ‹€ν–‰ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
관리가 더 쉽고 μ»¨ν…Œμ΄λ„ˆμ— λ§Žμ€ μ˜€λ²„ν—€λ“œκ°€ μ—†μŠ΅λ‹ˆλ‹€. λ˜ν•œ k8s와 같은 도ꡬλ₯Ό μ‚¬μš©ν•  λ•Œ μžλ™ 크기 쑰정을 μˆ˜ν–‰ν•˜λŠ” 것이 더 μ‰½μŠ΅λ‹ˆλ‹€.

λ§ˆμ§€λ§‰ ν•œκ°€μ§€. μ—¬λŸ¬ μž‘μ—…μžλ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μžμ‹ μ˜ bash 슀크립트λ₯Ό μ‹€ν–‰ν•˜λ €λ©΄ 각 μž‘μ—…μžλ₯Ό μ‹€ν–‰ν•œ λ‹€μŒ SIGTERM이 λ‚˜νƒ€λ‚  λ•ŒκΉŒμ§€ λ¬΄κΈ°ν•œ 잠 을
그런 일이 λ°œμƒν•˜λ©΄ κ°€μ„œ μž‘μ—…μž PIDλ₯Ό 얻은 λ‹€μŒ 각각을 μ •μƒμ μœΌλ‘œ 쀑지할 수 μžˆμŠ΅λ‹ˆλ‹€.
기본적으둜 무엇을 μ–΄λŠ supervisord @georgepsarakisλŠ” μ§€μ ν•œλ‹€.

도움이 λ˜λŠ” μ œμ•ˆμ„ ν•΄μ£Όμ‹  @georgepsarakis 와 @xirdneh μ—κ²Œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. λ‚˜λŠ” κ°λ…μžμ™€ ν•¨κ»˜ μž‘μ—… 섀정을 얻을 수 μžˆμ—ˆλ‹€! πŸŽ‰
μ»¨ν…Œμ΄λ„ˆλ‹Ή μž‘μ—…μžκ°€ 1λͺ…인 것도 맀우 쒋은 μ œμ•ˆμž…λ‹ˆλ‹€! 정말 κ°μ‚¬ν•©λ‹ˆλ‹€!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰