Celery: 확인할 수 μ—†μŒ, 이유 : BrokenPipeError (32, 'Broken pipe')

에 λ§Œλ“  2017λ…„ 01μ›” 19일  Β·  83μ½”λ©˜νŠΈ  Β·  좜처: celery/celery

체크리슀트

  • [X] λ¬Έμ œμ— celery -A proj report 의 κ²°κ³Όλ₯Ό ν¬ν•¨ν–ˆμŠ΅λ‹ˆλ‹€.
    (당신이 이것을 ν•  수 μ—†λ‹€λ©΄, 적어도 μ…€λŸ¬λ¦¬λ₯Ό μ§€μ •ν•˜μ‹­μ‹œμ˜€
    영ν–₯μ„λ°›λŠ” 버전).
software -> celery:4.0.2 (latentcall) kombu:4.0.2 py:3.4.3
            billiard:3.5.0.2 py-amqp:2.1.4
platform -> system:Linux arch:64bit, ELF imp:CPython
loader   -> celery.loaders.app.AppLoader
settings -> transport:amqp results:disabled
  • [X] Celery의 master 지점에 λ¬Έμ œκ°€ μžˆμŒμ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

μž¬ν˜„ 단계

Celery 4.0.2둜 μ—…κ·Έλ ˆμ΄λ“œν•©λ‹ˆλ‹€.

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

였λ₯˜κ°€ μ—†μŠ΅λ‹ˆλ‹€.

μ‹€μ œ 행동

λ‚΄ μž‘μ—…μžλ‘œλΆ€ν„°μ΄ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

[2017-01-19 04:07:57,411: CRITICAL/MainProcess] Couldn't ack 461, reason:BrokenPipeError(32, 'Broken pipe')
Traceback (most recent call last):
  File "/opt/app/current/venv/lib/python3.4/site-packages/kombu/message.py", line 130, in ack_log_error
    self.ack(multiple=multiple)
  File "/opt/app/current/venv/lib/python3.4/site-packages/kombu/message.py", line 125, in ack
    self.channel.basic_ack(self.delivery_tag, multiple=multiple)
  File "/opt/app/current/venv/lib/python3.4/site-packages/amqp/channel.py", line 1408, in basic_ack
    spec.Basic.Ack, argsig, (delivery_tag, multiple),
  File "/opt/app/current/venv/lib/python3.4/site-packages/amqp/abstract_channel.py", line 64, in send_method
    conn.frame_writer(1, self.channel_id, sig, args, content)
  File "/opt/app/current/venv/lib/python3.4/site-packages/amqp/method_framing.py", line 174, in write_frame
    write(view[:offset])
  File "/opt/app/current/venv/lib/python3.4/site-packages/amqp/transport.py", line 269, in write
    self._write(s)
BrokenPipeError: [Errno 32] Broken pipe

이둜 인해 μž‘μ—…μžλŠ” λͺ‡ μ΄ˆλ§ˆλ‹€ RabbitMQ에 λŒ€ν•œ 연결을 μž¬μ„€μ •ν•˜κ³  λ•Œλ•Œλ‘œ RabbitMQ μ„œλ²„μ—μ„œ ν—ˆμš©λ˜λŠ” μ΅œλŒ€ μ—°κ²° μ œν•œμ— λ„λ‹¬ν•˜κ²Œλ©λ‹ˆλ‹€.

RabbitMQ Broker HAProxy Bug Report Critical

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

@auvipy λ‹€μ‹œ μ—΄μ–΄μ£Όμ„Έμš”. 이것은 λ²„κ·Έμž…λ‹ˆλ‹€. 해킹은 μˆ˜μ • 사항이 μ•„λ‹™λ‹ˆλ‹€.

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

# 3328 및 # 3377κ³Ό κ΄€λ ¨μ΄μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

원인은 ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ ν•˜λ£¨λ‚˜ μ΄ν‹€λ§ˆλ‹€ μΌμ–΄λ‚˜κΈ° μ‹œμž‘ν•©λ‹ˆλ‹€. μž‘μ—…μžλ₯Ό λ‹€μ‹œ μ‹œμž‘ν•˜λ©΄ μž μ‹œ λ¬Έμ œκ°€ ν•΄κ²°λ©λ‹ˆλ‹€.

μ•½κ°„ 였래된 λ²„μ „μ˜ μ…€λŸ¬λ¦¬μ—μ„œλ„μ΄ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€.

software -> celery:3.1.23 (Cipater) kombu:3.0.35 py:3.5.3
            billiard:3.3.0.23 py-amqp:1.4.9
platform -> system:Linux arch:64bit, ELF imp:CPython
loader   -> celery.loaders.app.AppLoader
settings -> transport:amqp results:djcelery.backends.database:DatabaseBackend

+1

+1 졜근 μ…€λŸ¬λ¦¬ 3.2.1μ—μ„œμ΄ 문제 확인

+1 졜근 3.1.18μ—μ„œμ΄ 문제 확인

+1 4.0.2μ—μ„œ 문제보기

+1 4.0.2μ—μ„œ 문제보기

+1 4.0.2μ—μ„œ 문제보기

+1 4.0.2μ—μ„œ 문제보기

+1 4.0.2μ—μ„œμ΄ 문제 확인

참고둜,이 λ¬Έμ œμ™€ 기타 Celery 4.x λ¬Έμ œλŠ” 3.x둜 λ‹€μš΄ κ·Έλ ˆμ΄λ“œν–ˆμ„ λ•Œ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μž₯기적인 해결책은 https://github.com/Bogdanp/dramatiq 둜 μ „ν™˜ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. Celery .delay() 와 λ™μΌν•œ ꡬ문을 μ‚¬μš©ν•˜λ―€λ‘œ μ „ν™˜μ΄ 맀우 μ‰½μŠ΅λ‹ˆλ‹€.

4.0.2μ—μ„œ λ³΄λŠ” +1

4.0.2μ—μ„œ λ³΄λŠ” +1

4.1.0μ—μ„œ λ³΄λŠ” +1

4.1.0μ—μ„œ λ³΄λŠ” +1

+1 μ…€λŸ¬λ¦¬ (4.1.0), gevent보기

+1 μ…€λŸ¬λ¦¬ 4.1.0

+1

rabbitmq 브둜컀λ₯Ό μ‚¬μš©ν•˜μ—¬ 4.1.0μ—μ„œ 확인

+1
terminate 인수λ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘μ—…μ„ μ·¨μ†Œ ν•  λ•Œ λ°œμƒ : app.control.revoke(t.id, terminate=True)
Flowerμ—μ„œ μž‘μ—…μ„ μ’…λ£Œ ν•  λ•Œλ„ λ™μΌν•©λ‹ˆλ‹€.

Python 3.6.2rc2
Celery 4.1.0 (latentcall)
  broker: rabbitmq:3.6.12
  backend: redis:3.2.10
[2017-10-11 09:31:49,471: ERROR/MainProcess] Control command error: BrokenPipeError(32, 'Broken pipe')
Traceback (most recent call last):
  File "/home/gustavorps/.pyenv/versions/3.6.2rc2/lib/python3.6/site-packages/celery/worker/pidbox.py", line 42, in on_message
    self.node.handle_message(body, message)
  File "/home/gustavorps/.pyenv/versions/3.6.2rc2/lib/python3.6/site-packages/kombu/pidbox.py", line 129, in handle_message
    return self.dispatch(**body)
  File "/home/gustavorps/.pyenv/versions/3.6.2rc2/lib/python3.6/site-packages/kombu/pidbox.py", line 112, in dispatch
    ticket=ticket)
  File "/home/gustavorps/.pyenv/versions/3.6.2rc2/lib/python3.6/site-packages/kombu/pidbox.py", line 135, in reply
    serializer=self.mailbox.serializer)
  File "/home/gustavorps/.pyenv/versions/3.6.2rc2/lib/python3.6/site-packages/kombu/pidbox.py", line 265, in _publish_reply
    **opts
  File "/home/gustavorps/.pyenv/versions/3.6.2rc2/lib/python3.6/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/home/gustavorps/.pyenv/versions/3.6.2rc2/lib/python3.6/site-packages/kombu/messaging.py", line 203, in _publish
    mandatory=mandatory, immediate=immediate,
  File "/home/gustavorps/.pyenv/versions/3.6.2rc2/lib/python3.6/site-packages/amqp/channel.py", line 1734, in _basic_publish
    (0, exchange, routing_key, mandatory, immediate), msg
  File "/home/gustavorps/.pyenv/versions/3.6.2rc2/lib/python3.6/site-packages/amqp/abstract_channel.py", line 50, in send_method
    conn.frame_writer(1, self.channel_id, sig, args, content)
  File "/home/gustavorps/.pyenv/versions/3.6.2rc2/lib/python3.6/site-packages/amqp/method_framing.py", line 166, in write_frame
    write(view[:offset])
  File "/home/gustavorps/.pyenv/versions/3.6.2rc2/lib/python3.6/site-packages/amqp/transport.py", line 258, in write
    self._write(s)
BrokenPipeError: [Errno 32] Broken pipe

+1 μ…€λŸ¬λ¦¬ 4.0.0

@mihajenko 의 λ§ˆμ§€λ§‰ μ„€λͺ…을 μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€ https://github.com/celery/celery/issues/3377

μ…€λŸ¬λ¦¬ +1 (4.0.2)

Traceback (most recent call last):
  File "/Users/celery/.virtualenvs/opb/lib/python2.7/site-packages/kombu/message.py", line 130, in ack_log_error
    self.ack(multiple=multiple)
  File "/Users/celery/.virtualenvs/opb/lib/python2.7/site-packages/kombu/message.py", line 125, in ack
    self.channel.basic_ack(self.delivery_tag, multiple=multiple)
  File "/Users/celery/.virtualenvs/opb/lib/python2.7/site-packages/amqp/channel.py", line 1408, in basic_ack
    spec.Basic.Ack, argsig, (delivery_tag, multiple),
  File "/Users/celery/.virtualenvs/opb/lib/python2.7/site-packages/amqp/abstract_channel.py", line 64, in send_method
    conn.frame_writer(1, self.channel_id, sig, args, content)
  File "/Users/celery/.virtualenvs/opb/lib/python2.7/site-packages/amqp/method_framing.py", line 174, in write_frame
    write(view[:offset])
  File "/Users/celery/.virtualenvs/opb/lib/python2.7/site-packages/amqp/transport.py", line 269, in write
    self._write(s)
  File "/Users/celery/.virtualenvs/opb/lib/python2.7/site-packages/eventlet/greenio/base.py", line 397, in sendall
    tail = self.send(data, flags)
  File "/Users/celery/.virtualenvs/opb/lib/python2.7/site-packages/eventlet/greenio/base.py", line 391, in send
    return self._send_loop(self.fd.send, data, flags)
  File "/Users/celery/.virtualenvs/opb/lib/python2.7/site-packages/eventlet/greenio/base.py", line 378, in _send_loop
    return send_method(data, *args)
error: [Errno 32] Broken pipe

@auvipy λ‹€μ‹œ μ—΄μ–΄μ£Όμ„Έμš”. 이것은 λ²„κ·Έμž…λ‹ˆλ‹€. 해킹은 μˆ˜μ • 사항이 μ•„λ‹™λ‹ˆλ‹€.

@auvipy λΉ λ₯Έ μˆ˜μ •μ„

+1 4.4

+1 @ _ @

+1

+1을 μž…λ ₯ν•˜λŠ” λŒ€μ‹  μ‹œκ°„μ„λ‚΄μ–΄ κ΄€λ ¨ 문제λ₯Ό μ‘°μ‚¬ν•˜μ—¬ κ°€λŠ₯ν•œ 해결책을 μ°ΎμœΌμ‹­μ‹œμ˜€. λˆ„κ΅¬λ“ μ§€ 4.2rc2μ—μ„œ μ—¬μ „νžˆ 문제λ₯Όλ³΄κ³  ν•  수 μžˆλ‹€λ©΄ μ’‹μ„κΉŒμš”?

@auvipy μš°λ¦¬λŠ” 문제λ₯Ό 쑰사해 μ™”κ³ , μš°λ¦¬λŠ” λ‹€μ†Œ 큰 μ…€λŸ¬λ¦¬ + rabbitmq 인프라λ₯Ό 가지고 μžˆμŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” 였늘 3.1.25μ—μ„œ 4.2 패치둜 μ „ν™˜ν–ˆμŠ΅λ‹ˆλ‹€. μž‘μ—…μ΄ % 4 κ°μ†Œν•˜λŠ” 것을보기 μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. 이 였λ₯˜λŠ” μž‘μ—… 쀑단 / μ‹€νŒ¨μ™€ μΌμΉ˜ν–ˆμŠ΅λ‹ˆλ‹€. μ „ν™˜ κ³Όμ •μ—μ„œ μœ μ‚¬ν•œ λ¬Έμ œμ— μ§λ©΄ν•˜κ±°λ‚˜ λ“€μ–΄ λ³Έ 적이 μžˆμŠ΅λ‹ˆκΉŒ?

λ¨Όμ € λ‘œμ»¬μ—μ„œ https://github.com/celery/celery/releases/tag/v3.1.26 을 μ‹œλ„ν•œ λ‹€μŒ 4.2rc2둜 μ—…κ·Έλ ˆμ΄λ“œ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? zapierμ—μ„œ λ³΄κ³ μ„œλ₯Ό λ°›μ•˜λŠ”λ° 3.1μ—μ„œ 4.1둜 μ΄λ™ν•˜κ³  μžˆμ—ˆλŠ”λ°, 또 λ‹€λ₯Έ 점은 pypiμ—μ„œ celeryκ°€ 4.2rc2μ΄μ§€λ§Œ 쒅속성이 아직 pypi에 μ—†λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 4.2rc2둜 λ§ˆμŠ€ν„° 브랜치의 쒅속성을 μ—…λ°μ΄νŠΈν•˜κ³  μ–΄λ–€ 일이 λ°œμƒν•˜λŠ”μ§€λ³΄κ³  μ•Œλ €μ£ΌλŠ” 데 μ‹œκ°„μ„ ν• μ•  ν•  수 μžˆλ‹€λ©΄ 정말 쒋을 κ²ƒμž…λ‹ˆλ‹€. κ·Έ ν›„ 4.2 μ΅œμ’… λ¦΄λ¦¬μŠ€μ— λŒ€ν•΄ 높은 μš°μ„  μˆœμœ„ / μ°¨λ‹¨κΈ°λ‘œ ν‘œμ‹œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ 메일 λ§λ¦¬μŠ€νŠΈμ— λŒ€ν•œ 문제 제기λ₯Ό μš”μ²­ν•©λ‹ˆλ‹€

μ£„μ†‘ν•©λ‹ˆλ‹€ @auvipy , λͺ…ν™•νžˆν•˜κΈ° μœ„ν•΄ : pypiμ—μ„œ @ 4.2rc2 μ½”λ“œλ₯Ό μ‹œλ„ν•΄λ³΄κ³  μ‹Άμ§€λ§Œ 쒅속 ν•­λͺ©μ΄ λ§ˆμŠ€ν„° 브랜치의 쒅속성 λͺ©λ‘κ³Ό μΌμΉ˜ν•˜λ„λ‘ μ—…λ°μ΄νŠΈ λ˜μ—ˆμŠ΅λ‹ˆκΉŒ?

λͺ¨λ‘λŠ” μ•„λ‹ˆμ§€λ§Œ λˆ„κ΅°κ°€κ°€ μžˆλ‹€λ©΄ pypi의 celery 4.2rc2 및 github λ§ˆμŠ€ν„°μ˜ λ‹€λ₯Έ μƒλŸ¬λ¦¬ 쒅속 ν•­λͺ©μ€ 둜컬 / μŠ€ν…Œμ΄μ§• μ„œλ²„μ˜ brnachμž…λ‹ˆλ‹€.

λ‚˜λŠ” @burakbostancioglu 와 ν•¨κ»˜

κ°μ‚¬ν•©λ‹ˆλ‹€ :)

μ–΄λ–€ μ—…λ°μ΄νŠΈ 녀석? 4.2rc4λ₯Ό μ‚¬μš©ν•˜κ³  κ³„μ‹­λ‹ˆκΉŒ?

λ‘œλ“œ 쀑일 λ•Œ Celery 4.2.0μ—μ„œ μƒλ‹Ήνžˆ μ •κΈ°μ μœΌλ‘œ λ°œμƒν•˜λŠ” κ²ƒμœΌλ‘œ λ‚˜νƒ€λ‚¬μŠ΅λ‹ˆλ‹€ (3.1.25-> 4.2.0 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ ν…ŒμŠ€νŠΈ μ€‘μ΄μ§€λ§Œ 차단 μ€‘μž…λ‹ˆλ‹€). λ‚˜λŠ” μ›μˆ­μ΄ 패치 κ·Έλ¦° 릿이 μ•„λ‹™λ‹ˆλ‹€. λΈŒλ‘œμ»€λ‘œμ„œμ˜ RMQ, κ²°κ³Ό λ°±μ—”λ“œλ‘œ redis.

μš°λ¦¬κ°€ ν”Όν•  수 μžˆλ‹€λ©΄ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•˜κΈ°μ—λŠ” λ„ˆλ¬΄ μ—΄μ‹¬νžˆ 파고 λ“€μ§€λ§Œ νŒμ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€ :-)

이 였λ₯˜μ™€ κ΄€λ ¨ν•˜μ—¬ 쑰사 ν•  μˆ˜μžˆλŠ” 사항이 있으면 μ•Œλ €μ£Όμ„Έμš”.

μ–ΈκΈ‰ 된 μˆ˜μ • 사항을 μ μš©ν–ˆμŠ΅λ‹ˆλ‹€.
https://github.com/celery/celery/issues/4226 그리고 그것은 λ‚˜λ₯Ό μœ„ν•΄ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

그렇닀면이 λ¬Έμ œκ°€ ν•΄κ²° λ˜μ—ˆμŠ΅λ‹ˆκΉŒ? μ•„λ‹ˆλ©΄ ν•΄κ²° 방법이 μžˆμŠ΅λ‹ˆκΉŒ? λ‚΄ λͺ¨λ“  μž‘μ—… 흐름은 μ…€λŸ¬λ¦¬μ— μ˜μ‘΄ν•˜λ©°μ΄ 도ꡬλ₯Ό 정말 μ’‹μ•„ν•©λ‹ˆλ‹€.

버그λ₯Ό ν•΄κ²°ν•˜λŠ” 데 λ°©ν•΄κ°€λ˜λŠ” 경우 μ‹€μ œ ν•΄κ²° 전에 퀡픽이 μžˆμŠ΅λ‹ˆκΉŒ?

@xirdneh κ°€λŠ₯ν•˜λ©΄ κ΄€λ ¨

λ‚˜λŠ” 정적 μ„€μ • --concurrency λŒ€μ‹  --autoscale 이 λ‚˜λ₯Ό μœ„ν•΄ 문제λ₯Ό ν•΄κ²°ν–ˆλ‹€.

(λ™μ‹œμ„± 1의 버그가 있고 μžλ™ 크기 쑰정이 μ—†μŒ)

μ…€λŸ¬λ¦¬ 4.2.1μ—μ„œ μ—¬μ „νžˆ λ™μΌν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. ν•œ 가지 더 λ§Žμ€ λ³΄κ³ μ„œκ°€ λ„μ›€μ΄λ˜κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

software -> celery:4.2.1 (windowlicker) kombu:4.2.1 py:2.7.15rc1
            billiard:3.5.0.4 redis:2.10.6
platform -> system:Linux arch:64bit imp:CPython
loader   -> celery.loaders.app.AppLoader
settings -> transport:redis results:redis://127.0.0.1:6379/0

broker_url: u'redis://127.0.0.1:6379/0'
result_backend: u'redis://127.0.0.1:6379/0'
task_routes: {
    u'celery.crawler.fbk.download_alt_text': {   u'queue': u'fbk_alt_text'}}

μ…€λŸ¬λ¦¬ λ§ˆμŠ€ν„°λ‘œ ν…ŒμŠ€νŠΈ ν•  μ‚¬λžŒ μžˆλ‚˜μš”?

이것은 μ—¬μ „νžˆ β€‹β€‹μ‘΄μž¬ν•©λ‹ˆλ‹€.
default celery-67c7fff78b-g48vx celery Couldn't ack 23, reason:BrokenPipeError(32, 'Broken pipe') default celery-67c7fff78b-g48vx celery Traceback (most recent call last): default celery-67c7fff78b-g48vx celery File "/usr/local/lib/python3.7/site-packages/kombu/message.py", line 130, in ack_log_error default celery-67c7fff78b-g48vx celery self.ack(multiple=multiple) default celery-67c7fff78b-g48vx celery File "/usr/local/lib/python3.7/site-packages/kombu/message.py", line 125, in ack default celery-67c7fff78b-g48vx celery self.channel.basic_ack(self.delivery_tag, multiple=multiple) default celery-67c7fff78b-g48vx celery File "/usr/local/lib/python3.7/site-packages/amqp/channel.py", line 1399, in basic_ack default celery-67c7fff78b-g48vx celery spec.Basic.Ack, argsig, (delivery_tag, multiple), default celery-67c7fff78b-g48vx celery File "/usr/local/lib/python3.7/site-packages/amqp/abstract_channel.py", line 51, in send_method default celery-67c7fff78b-g48vx celery conn.frame_writer(1, self.channel_id, sig, args, content) default celery-67c7fff78b-g48vx celery File "/usr/local/lib/python3.7/site-packages/amqp/method_framing.py", line 172, in write_frame default celery-67c7fff78b-g48vx celery write(view[:offset]) default celery-67c7fff78b-g48vx celery File "/usr/local/lib/python3.7/site-packages/amqp/transport.py", line 288, in write default celery-67c7fff78b-g48vx celery self._write(s) default celery-67c7fff78b-g48vx celery File "/usr/local/lib/python3.7/site-packages/gevent/_socket3.py", line 458, in sendall default celery-67c7fff78b-g48vx celery return _socketcommon._sendall(self, data_memory, flags) default celery-67c7fff78b-g48vx celery File "/usr/local/lib/python3.7/site-packages/gevent/_socketcommon.py", line 374, in _sendall default celery-67c7fff78b-g48vx celery timeleft = __send_chunk(socket, chunk, flags, timeleft, end) default celery-67c7fff78b-g48vx celery File "/usr/local/lib/python3.7/site-packages/gevent/_socketcommon.py", line 303, in __send_chunk default celery-67c7fff78b-g48vx celery data_sent += socket.send(chunk, flags) default celery-67c7fff78b-g48vx celery File "/usr/local/lib/python3.7/site-packages/gevent/_socket3.py", line 439, in send default celery-67c7fff78b-g48vx celery return _socket.socket.send(self._sock, data, flags) default celery-67c7fff78b-g48vx celery BrokenPipeError: [Errno 32] Broken pipe

gevent 문제인 것 κ°™μŠ΅λ‹ˆκΉŒ? ile "/usr/local/lib/python3.7/site-packages/gevent/_socket3.py", 439 ν–‰, 전솑 쀑
κΈ°λ³Έ celery-67c7fff78b-g48vx celery return _socket.socket.send (self._sock, data, flags)
default celery-67c7fff78b-g48vx celery BrokenPipeError : [Errno 32] 깨진 νŒŒμ΄ν”„

μ…€λŸ¬λ¦¬ 4.4.0rc1?

https://github.com/celery/celery/issues/3377 μ—μ„œ μ œμ•ˆ 된 패치둜 λ§ˆμŠ€ν„° λΈŒλžœμΉ˜μ—μ„œ μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.

1 μ‹œκ°„ μž‘λ™ 후에도 μ—¬μ „νžˆ 멈좀

+1 μ…€λŸ¬λ¦¬ 4.2.1

@auvipy Celery 4.3.0 + gevent + RabbitMQμ—μ„œμ΄ 문제λ₯Ό λ³΄μ•˜μŠ΅λ‹ˆλ‹€. strace λ₯Ό μ‚¬μš©ν•˜μ—¬ λ¬Έμ œκ°€ recvfrom 및 epoll_wait syscallκ³Ό κ΄€λ ¨λ˜μ–΄ μžˆμŒμ„ λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. μ†ŒμΌ“μ΄ RabbitMQμ—μ„œ λ©”μ‹œμ§€λ₯Ό μˆ˜μ‹ ν•˜μ§€ λͺ»ν•˜κ³  λ¬΄ν•œ 루프에 λΉ μ§€λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. Celery ν”„λ‘œμ„ΈμŠ€κ°€ 거기에 λΆ™μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

26738 λŠ” Celery ν”„λ‘œμ„ΈμŠ€ IDμž…λ‹ˆλ‹€.

 sudo strace -p 26738 -f
...
[pid 26738] recvfrom(5, 0x7fbead4995c4, 7, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399616, 441000388}) = 0
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399616, 441208787}) = 0
[pid 26738] epoll_wait(15, [], 64, 502) = 0
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399616, 944133989}) = 0
[pid 26738] recvfrom(21, 0x7fbead4995c4, 7, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399616, 944706657}) = 0
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399616, 944870229}) = 0
[pid 26738] epoll_wait(15, [], 64, 999) = 0
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399617, 944471272}) = 0
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399617, 944612143}) = 0
[pid 26738] epoll_wait(15, [], 64, 1)   = 0
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399617, 945931383}) = 0
[pid 26738] recvfrom(21, 0x7fbead4995c4, 7, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable) sudo strace -p 26738 -f
...
[pid 26738] recvfrom(5, 0x7fbead4995c4, 7, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399616, 441000388}) = 0
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399616, 441208787}) = 0
[pid 26738] epoll_wait(15, [], 64, 502) = 0
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399616, 944133989}) = 0
[pid 26738] recvfrom(21, 0x7fbead4995c4, 7, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399616, 944706657}) = 0
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399616, 944870229}) = 0
[pid 26738] epoll_wait(15, [], 64, 999) = 0
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399617, 944471272}) = 0
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399617, 944612143}) = 0
[pid 26738] epoll_wait(15, [], 64, 1)   = 0
[pid 26738] clock_gettime(CLOCK_MONOTONIC, {3399617, 945931383}) = 0
[pid 26738] recvfrom(21, 0x7fbead4995c4, 7, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)

inode 5, 15, 21에 λŒ€ν•œ μΆ”κ°€ 정보 :

$ sudo ls -la /proc/26738/fd/5
lrwx------ 1 xxx xxx 64 Aug  2 06:05 /proc/26738/fd/5 -> socket:[99157475]
$ sudo ls -la /proc/26738/fd/21
lrwx------ 1 xxx xxx 64 Aug  2 06:05 /proc/26738/fd/21 -> socket:[99144296]
$ sudo ls -la /proc/26738/fd/15
lrwx------ 1 xxx xxx 64 Aug  2 06:05 /proc/26738/fd/15 -> anon_inode:[eventpoll]
$ sudo lsof -p 26738 | grep 99157475
celery  26738 xxx    5u     IPv4 99157475      0t0      TCP xxx-1084:50954->rabbit.xxx-1084:amqp (ESTABLISHED)
$ sudo lsof -p 26738 | grep 99144296
celery  26738 xxx   21u     IPv4 99144296      0t0      TCP xxx-1084:38194->rabbit.xxx-1084:amqp (ESTABLISHED)
$ sudo head -n1 /proc/26738/net/tcp; grep -a 99157475 /proc/26738/net/tcp
  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
  10: 8A01010A:C70A 5E00010A:1628 01 00000000:00000000 02:00000351 00000000  1005        0 99157475 2 0000000000000000 20 4 30 10 -1

도움이 λ˜μ—ˆκΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

+1

+1

@duydo λ‚˜λŠ” λ‹Ήμ‹ κ³Ό 같은 상황을 λ§Œλ‚˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 그리고 rabbitMQλŠ” 아무것도 ν™•μΈν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.

Traceback (most recent call last):
  File "/home/ymserver/.pyenv/versions/adspider/lib/python3.6/site-packages/kombu/message.py", line 130, in ack_log_error
    self.ack(multiple=multiple)
  File "/home/ymserver/.pyenv/versions/adspider/lib/python3.6/site-packages/kombu/message.py", line 125, in ack
    self.channel.basic_ack(self.delivery_tag, multiple=multiple)
  File "/home/ymserver/.pyenv/versions/adspider/lib/python3.6/site-packages/amqp/channel.py", line 1399, in basic_ack
    spec.Basic.Ack, argsig, (delivery_tag, multiple),
  File "/home/ymserver/.pyenv/versions/adspider/lib/python3.6/site-packages/amqp/abstract_channel.py", line 51, in send_method
    conn.frame_writer(1, self.channel_id, sig, args, content)
  File "/home/ymserver/.pyenv/versions/adspider/lib/python3.6/site-packages/amqp/method_framing.py", line 172, in write_frame
    write(view[:offset])
  File "/home/ymserver/.pyenv/versions/adspider/lib/python3.6/site-packages/amqp/transport.py", line 288, in write
    self._write(s)
  File "/home/ymserver/.pyenv/versions/adspider/lib/python3.6/site-packages/gevent/_socket3.py", line 458, in sendall
    return _socketcommon._sendall(self, data_memory, flags)
  File "/home/ymserver/.pyenv/versions/adspider/lib/python3.6/site-packages/gevent/_socketcommon.py", line 374, in _sendall
    timeleft = __send_chunk(socket, chunk, flags, timeleft, end)
  File "/home/ymserver/.pyenv/versions/adspider/lib/python3.6/site-packages/gevent/_socketcommon.py", line 303, in __send_chunk
    data_sent += socket.send(chunk, flags)
  File "/home/ymserver/.pyenv/versions/adspider/lib/python3.6/site-packages/gevent/_socket3.py", line 439, in send
    return _socket.socket.send(self._sock, data, flags)
BrokenPipeError: [Errno 32] Broken pipe

straceλ₯Ό μ‚¬μš©ν•˜μ—¬ PIDλ₯Ό μΆ”μ ν•©λ‹ˆλ‹€.
$ sudo strace -p 27977 -f

[pid 27977] getpid()                    = 27977
[pid 27977] clock_gettime(CLOCK_MONOTONIC, {tv_sec=10372759, tv_nsec=108490973}) = 0
[pid 27977] clock_gettime(CLOCK_MONOTONIC, {tv_sec=10372759, tv_nsec=108664276}) = 0
[pid 27977] epoll_wait(4, [], 64, 1999) = 0
[pid 27977] clock_gettime(CLOCK_MONOTONIC, {tv_sec=10372761, tv_nsec=108549437}) = 0
[pid 27977] recvfrom(10, 0x7fc8c406a758, 7, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
[pid 27977] clock_gettime(CLOCK_MONOTONIC, {tv_sec=10372761, tv_nsec=109251966}) = 0
[pid 27977] getpid()                    = 27977
[pid 27977] clock_gettime(CLOCK_MONOTONIC, {tv_sec=10372761, tv_nsec=109598283}) = 0
[pid 27977] clock_gettime(CLOCK_MONOTONIC, {tv_sec=10372761, tv_nsec=109777281}) = 0
[pid 27977] epoll_wait(4, [], 64, 1529) = 0
[pid 27977] clock_gettime(CLOCK_MONOTONIC, {tv_sec=10372762, tv_nsec=640754845}) = 0
[pid 27977] getpid()                    = 27977
[pid 27977] clock_gettime(CLOCK_MONOTONIC, {tv_sec=10372762, tv_nsec=641809883}) = 0
[pid 27977] clock_gettime(CLOCK_MONOTONIC, {tv_sec=10372762, tv_nsec=641940654}) = 0
[pid 27977] epoll_wait(4, [], 64, 467)  = 0
[pid 27977] clock_gettime(CLOCK_MONOTONIC, {tv_sec=10372763, tv_nsec=109901002}) = 0
[pid 27977] recvfrom(10, 0x7fc8c406a758, 7, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
[pid 27977] clock_gettime(CLOCK_MONOTONIC, {tv_sec=10372763, tv_nsec=110880127}) = 0
[pid 27977] getpid()                    = 27977

$ sudo lsof -p 27977|grep 1651852686

python  27977 ymserver   10u     IPv4 1651852686      0t0        TCP vuljp-ag-proxy-01:33006->10.55.4.70:amqp (ESTABLISHED)

https://github.com/celery/celery/pull/5581/files μ‹œλ„ν•΄λ³΄μ‹­μ‹œμ˜€

+1 μ…€λŸ¬λ¦¬ v4.4.2

+1 μ…€λŸ¬λ¦¬ 4.3.0

+1 μ…€λŸ¬λ¦¬ 4.3.0

슀팸 +1λ³΄λ‹€λŠ” κ΄€λ ¨ PR을 ν™•μΈν•˜κ³  λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό 톡해 κ°œμ„ ν•˜μ‹­μ‹œμ˜€.

python2 λ˜λŠ” python3 env와 상관없이 μ…€λŸ¬λ¦¬ 4.4.6의 경우 +1.

software -> celery:4.4.6 (cliffs) kombu:4.6.11 py:2.7.10
            billiard:3.6.3.0 py-amqp:2.6.0
platform -> system:Darwin arch:64bit
            kernel version:17.7.0 imp:CPython
loader   -> celery.loaders.app.AppLoader
settings -> transport:pyamqp results:redis://10.28.218.6/

λ‘œκ·ΈλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

worker: Warm shutdown (MainProcess)
[2020-07-17 22:27:51,844: DEBUG/MainProcess] | Worker: Closing Hub...
[2020-07-17 22:27:51,844: DEBUG/MainProcess] | Worker: Closing Pool...
[2020-07-17 22:27:51,845: DEBUG/MainProcess] | Worker: Closing Consumer...
[2020-07-17 22:27:51,845: DEBUG/MainProcess] | Worker: Stopping Consumer...
[2020-07-17 22:27:51,845: DEBUG/MainProcess] | Consumer: Closing Connection...
[2020-07-17 22:27:51,845: DEBUG/MainProcess] | Consumer: Closing Events...
[2020-07-17 22:27:51,845: DEBUG/MainProcess] | Consumer: Closing Mingle...
[2020-07-17 22:27:51,845: DEBUG/MainProcess] | Consumer: Closing Gossip...
[2020-07-17 22:27:51,845: DEBUG/MainProcess] | Consumer: Closing Heart...
[2020-07-17 22:27:51,845: DEBUG/MainProcess] | Consumer: Closing Tasks...
[2020-07-17 22:27:51,845: DEBUG/MainProcess] | Consumer: Closing Control...
[2020-07-17 22:27:51,845: DEBUG/MainProcess] | Consumer: Closing event loop...
[2020-07-17 22:27:51,845: DEBUG/MainProcess] | Consumer: Stopping event loop...
[2020-07-17 22:27:51,845: DEBUG/MainProcess] | Consumer: Stopping Control...
[2020-07-17 22:27:52,153: DEBUG/MainProcess] Closed channel #3
[2020-07-17 22:27:52,153: DEBUG/MainProcess] | Consumer: Stopping Tasks...
[2020-07-17 22:27:52,153: DEBUG/MainProcess] Canceling task consumer...
[2020-07-17 22:27:53,279: DEBUG/MainProcess] | Consumer: Stopping Heart...
[2020-07-17 22:27:53,280: DEBUG/MainProcess] | Consumer: Stopping Gossip...
[2020-07-17 22:27:53,842: DEBUG/MainProcess] Closed channel #2
[2020-07-17 22:27:53,842: DEBUG/MainProcess] | Consumer: Stopping Mingle...
[2020-07-17 22:27:53,842: DEBUG/MainProcess] | Consumer: Stopping Events...
[2020-07-17 22:27:53,842: DEBUG/MainProcess] | Consumer: Stopping Connection...
[2020-07-17 22:27:53,843: DEBUG/MainProcess] | Worker: Stopping Pool...
^@^@[2020-07-17 22:31:07,678: INFO/ForkPoolWorker-1] Task tasks.handle_compressed[5e493207-a3c5-422e-ab82-1f382342273c] succeeded in 200.757257249s: {'name': 'ray'}
[2020-07-17 22:31:09,188: DEBUG/MainProcess] | Worker: Stopping Hub...
[2020-07-17 22:31:09,189: CRITICAL/MainProcess] Couldn't ack 1, reason:error(32, 'Broken pipe')
Traceback (most recent call last):
  File "/Users/ranc/p2dev/lib/python2.7/site-packages/kombu/message.py", line 131, in ack_log_error
    self.ack(multiple=multiple)
  File "/Users/ranc/p2dev/lib/python2.7/site-packages/kombu/message.py", line 126, in ack
    self.channel.basic_ack(self.delivery_tag, multiple=multiple)
  File "/Users/ranc/p2dev/lib/python2.7/site-packages/amqp/channel.py", line 1394, in basic_ack
    spec.Basic.Ack, argsig, (delivery_tag, multiple),
  File "/Users/ranc/p2dev/lib/python2.7/site-packages/amqp/abstract_channel.py", line 59, in send_method
    conn.frame_writer(1, self.channel_id, sig, args, content)
  File "/Users/ranc/p2dev/lib/python2.7/site-packages/amqp/method_framing.py", line 172, in write_frame
    write(view[:offset])
  File "/Users/ranc/p2dev/lib/python2.7/site-packages/amqp/transport.py", line 305, in write
    self._write(s)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 32] Broken pipe
[2020-07-17 22:31:09,195: DEBUG/MainProcess] | Consumer: Shutdown Control...
[2020-07-17 22:31:09,196: DEBUG/MainProcess] | Consumer: Shutdown Tasks...
[2020-07-17 22:31:09,196: DEBUG/MainProcess] Canceling task consumer...
[2020-07-17 22:31:09,196: DEBUG/MainProcess] Closing consumer channel...
[2020-07-17 22:31:09,196: DEBUG/MainProcess] | Consumer: Shutdown Heart...
[2020-07-17 22:31:09,196: DEBUG/MainProcess] | Consumer: Shutdown Gossip...
[2020-07-17 22:31:09,196: DEBUG/MainProcess] | Consumer: Shutdown Events...
[2020-07-17 22:31:09,431: DEBUG/MainProcess] Closed channel #1
[2020-07-17 22:31:09,663: DEBUG/MainProcess] | Consumer: Shutdown Connection...
[2020-07-17 22:31:09,665: DEBUG/MainProcess] removing tasks from inqueue until task handler finished

참고둜. disable broker_heartbeat (broker_heartbeat = 0)λŠ” λ‚΄ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 쒋은 싀행인지 ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

이 λΆ„λ₯˜ 정보가 κ·Όλ³Έ 사둀 뢄석에 λ„μ›€μ΄λ˜κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

  > ps -ef | grep worker
  502 92665 75622   0 10:27PM ttys008    0:00.78 /Users/ranc/p2dev/bin/python /Users/ranc/p2dev/bin/celery -A tasks worker -l debug -c 1
  502 92672 92665   0 10:27PM ttys008    0:00.01 /Users/ranc/p2dev/bin/python /Users/ranc/p2dev/bin/celery -A tasks worker -l debug -c 1
  > sudo dtruss -p 75622 -f

......
92665/0xf94bb7:  fcntl(0x5, 0x4, 0x4)        = 0 0
92665/0xf94bb7:  wait4(0x16A00, 0x7FFEEB4B0C10, 0x1)         = 0 0
92665/0xf94bb7:  wait4(0x16A00, 0x7FFEEB4B13E0, 0x0)         = 92672 0
92665/0xf94bb7:  close(0xB)      = 0 0
dtrace: error on enabled probe ID 2173 (ID 947: syscall::write_nocancel:return): invalid kernel access in action #13 at DIF offset 68
92665/0xf94bb7:  sendto(0xD, 0x1068AF000, 0x15)      = -1 Err#32
92665/0xf94bb7:  stat64("/Users/ranc/p2dev/lib/python2.7/site-packages/kombu/message.py\0", 0x7FFEEB4AF280, 0x0)         = 0 0
92665/0xf94bb7:  open_nocancel("/Users/ranc/p2dev/lib/python2.7/site-packages/kombu/message.py\0", 0x0, 0x1B6)       = 11 0
92665/0xf94bb7:  fstat64(0xB, 0x7FFEEB4AF0F8, 0x0)       = 0 0
92665/0xf94bb7:  fstat64(0xB, 0x7FFEEB4AD098, 0x0)       = 0 0
dtrace: error on enabled probe ID 2175 (ID 945: syscall::read_nocancel:return): invalid kernel access in action #13 at DIF offset 68
dtrace: error on enabled probe ID 2175 (ID 945: syscall::read_nocancel:return): invalid kernel access in action #13 at DIF offset 68
92665/0xf94bb7:  close_nocancel(0xB)         = 0 0
92665/0xf94bb7:  stat64("/Users/ranc/p2dev/lib/python2.7/site-packages/kombu/message.py\0", 0x7FFEEB4AF680, 0x0)         = 0 0
92665/0xf94bb7:  stat64("/Users/ranc/p2dev/lib/python2.7/site-packages/amqp/channel.py\0", 0x7FFEEB4AF280, 0x0)      = 0 0
92665/0xf94bb7:  open_nocancel("/Users/ranc/p2dev/lib/python2.7/site-packages/amqp/channel.py\0", 0x0, 0x1B6)        = 11 0
92665/0xf94bb7:  fstat64(0xB, 0x7FFEEB4AF0F8, 0x0)       = 0 0
92665/0xf94bb7:  fstat64(0xB, 0x7FFEEB4AD098, 0x0)       = 0 0
dtrace: error on enabled probe ID 2175 (ID 945: syscall::read_nocancel:return): invalid kernel access in action #13 at DIF offset 68
dtrace: error on enabled probe ID 2175 (ID 945: syscall::read_nocancel:return): invalid kernel access in action #13 at DIF offset 68
dtrace: error on enabled probe ID 2175 (ID 945: syscall::read_nocancel:return): invalid kernel access in action #13 at DIF offset 68
92665/0xf94bb7:  close_nocancel(0xB)         = 0 0
92665/0xf94bb7:  stat64("/Users/ranc/p2dev/lib/python2.7/site-packages/amqp/abstract_channel.py\0", 0x7FFEEB4AF280, 0x0)         = 0 0
92665/0xf94bb7:  open_nocancel("/Users/ranc/p2dev/lib/python2.7/site-packages/amqp/abstract_channel.py\0", 0x0, 0x1B6)       = 11 0
92665/0xf94bb7:  fstat64(0xB, 0x7FFEEB4AF0F8, 0x0)       = 0 0
92665/0xf94bb7:  fstat64(0xB, 0x7FFEEB4AD098, 0x0)       = 0 0
dtrace: error on enabled probe ID 2175 (ID 945: syscall::read_nocancel:return): invalid kernel access in action #13 at DIF offset 68
dtrace: error on enabled probe ID 2175 (ID 945: syscall::read_nocancel:return): invalid kernel access in action #13 at DIF offset 68
92665/0xf94bb7:  close_nocancel(0xB)         = 0 0
92665/0xf94bb7:  stat64("/Users/ranc/p2dev/lib/python2.7/site-packages/amqp/method_framing.py\0", 0x7FFEEB4AF280, 0x0)       = 0 0
92665/0xf94bb7:  open_nocancel("/Users/ranc/p2dev/lib/python2.7/site-packages/amqp/method_framing.py\0", 0x0, 0x1B6)         = 11 0
92665/0xf94bb7:  fstat64(0xB, 0x7FFEEB4AF0F8, 0x0)       = 0 0
92665/0xf94bb7:  fstat64(0xB, 0x7FFEEB4AD098, 0x0)       = 0 0
dtrace: error on enabled probe ID 2175 (ID 945: syscall::read_nocancel:return): invalid kernel access in action #13 at DIF offset 68
dtrace: error on enabled probe ID 2175 (ID 945: syscall::read_nocancel:return): invalid kernel access in action #13 at DIF offset 68
92665/0xf94bb7:  close_nocancel(0xB)         = 0 0
92665/0xf94bb7:  stat64("/Users/ranc/p2dev/lib/python2.7/site-packages/amqp/transport.py\0", 0x7FFEEB4AF280, 0x0)        = 0 0
92665/0xf94bb7:  open_nocancel("/Users/ranc/p2dev/lib/python2.7/site-packages/amqp/transport.py\0", 0x0, 0x1B6)      = 11 0
92665/0xf94bb7:  fstat64(0xB, 0x7FFEEB4AF0F8, 0x0)       = 0 0
92665/0xf94bb7:  fstat64(0xB, 0x7FFEEB4AD098, 0x0)       = 0 0
dtrace: error on enabled probe ID 2175 (ID 945: syscall::read_nocancel:return): invalid kernel access in action #13 at DIF offset 68
92665/0xf94bb7:  mmap(0x0, 0x40000, 0x3, 0x1002, 0xFFFFFFFFFFFFFFFF, 0x0)        = 0x1069D1000 0
dtrace: error on enabled probe ID 2175 (ID 945: syscall::read_nocancel:return): invalid kernel access in action #13 at DIF offset 68
92665/0xf94bb7:  close_nocancel(0xB)         = 0 0
92665/0xf94bb7:  stat64("/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py\0", 0x7FFEEB4AF280, 0x0)       = 0 0
92665/0xf94bb7:  open_nocancel("/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py\0", 0x0, 0x1B6)         = 11 0
92665/0xf94bb7:  fstat64(0xB, 0x7FFEEB4AF0F8, 0x0)       = 0 0
92665/0xf94bb7:  fstat64(0xB, 0x7FFEEB4AD098, 0x0)       = 0 0
dtrace: error on enabled probe ID 2175 (ID 945: syscall::read_nocancel:return): invalid kernel access in action #13 at DIF offset 68
dtrace: error on enabled probe ID 2175 (ID 945: syscall::read_nocancel:return): invalid kernel access in action #13 at DIF offset 68
92665/0xf94bb7:  close_nocancel(0xB)         = 0 0
dtrace: error on enabled probe ID 2173 (ID 947: syscall::write_nocancel:return): invalid kernel access in action #13 at DIF offset 68
dtrace: error on enabled probe ID 2173 (ID 947: syscall::write_nocancel:return): invalid kernel access in action #13 at DIF offset 68
dtrace: error on enabled probe ID 2173 (ID 947: syscall::write_nocancel:return): invalid kernel access in action #13 at DIF offset 68
dtrace: error on enabled probe ID 2173 (ID 947: syscall::write_nocancel:return): invalid kernel access in action #13 at DIF offset 68
dtrace: error on enabled probe ID 2173 (ID 947: syscall::write_nocancel:return): invalid kernel access in action #13 at DIF offset 68
dtrace: error on enabled probe ID 2173 (ID 947: syscall::write_nocancel:return): invalid kernel access in action #13 at DIF offset 68
dtrace: error on enabled probe ID 2173 (ID 947: syscall::write_nocancel:return): invalid kernel access in action #13 at DIF offset 68
dtrace: error on enabled probe ID 2173 (ID 947: syscall::write_nocancel:return): invalid kernel access in action #13 at DIF offset 68
dtrace: error on enabled probe ID 2173 (ID 947: syscall::write_nocancel:return): invalid kernel access in action #13 at DIF offset 68
92665/0xf94bb7:  sendto(0xE, 0x1068F0000, 0x13)      = 19 0
92665/0xf94bb7:  recvfrom(0xE, 0x1069970E4, 0x7)         = 7 0
92665/0xf94bb7:  recvfrom(0xE, 0x1069970B4, 0x4)         = 4 0
92665/0xf94bb7:  recvfrom(0xE, 0x10676348C, 0x1)         = 1 0
dtrace: error on enabled probe ID 2173 (ID 947: syscall::write_nocancel:return): invalid kernel access in action #13 at DIF offset 68
92665/0xf94bb7:  madvise(0x1068CF000, 0x21000, 0x9)      = 0 0
92665/0xf94bb7:  sendto(0xE, 0x1068F0000, 0x13)      = 19 0
92665/0xf94bb7:  recvfrom(0xE, 0x1069970E4, 0x7)         = 7 0
92665/0xf94bb7:  recvfrom(0xE, 0x1069970B4, 0x4)         = 4 0
92665/0xf94bb7:  recvfrom(0xE, 0x10676348C, 0x1)         = 1 0
92665/0xf94bb7:  shutdown(0xE, 0x2, 0x0)         = 0 0
dtrace: error on enabled probe ID 2173 (ID 947: syscall::write_nocancel:return): invalid kernel access in action #13 at DIF offset 68
92665/0xf94bb7:  sendto(0xD, 0x1068AF000, 0x13)      = -1 Err#32
92665/0xf94bb7:  sendto(0xD, 0x1068AF000, 0x13)      = -1 Err#32
92665/0xf94bb7:  shutdown(0xD, 0x2, 0x0)         = -1 Err#57
dtrace: error on enabled probe ID 2173 (ID 947: syscall::write_nocancel:return): invalid kernel access in action #13 at DIF offset 68
92665/0xf94bb7:  select(0x4, 0x7FFEEB4A6E58, 0x7FFEEB4A6ED8, 0x7FFEEB4A6F58, 0x7FFEEB4A6FD8)         = 0 0
92665/0xf94bb7:  fcntl(0x4, 0x3, 0x0)        = 1 0
92665/0xf94bb7:  fcntl(0x4, 0x4, 0x1)        = 0 0
dtrace: error on enabled probe ID 2172 (ID 161: syscall::write:return): invalid kernel access in action #13 at DIF offset 68
92665/0xf94bb7:  lstat64("/var/folders/d9/xww6x1gj50j9769f0x47nw_h0000gp/T/pymp-kJBMDs\0", 0x7FFEEB4B34F0, 0x0)      = 0 0
92665/0xf94bb7:  open_nocancel("/var/folders/d9/xww6x1gj50j9769f0x47nw_h0000gp/T/pymp-kJBMDs\0", 0x1100004, 0x1213200)       = 11 0
92665/0xf94bb7:  fstatfs64(0xB, 0x7FFEEB4B2DB8, 0x0)         = 0 0
92665/0xf94bb7:  getdirentries64(0xB, 0x7FBE640A0A00, 0x1000)        = 64 0
92665/0xf94bb7:  getdirentries64(0xB, 0x7FBE640A0A00, 0x1000)        = 0 0
92665/0xf94bb7:  close_nocancel(0xB)         = 0 0
92665/0xf94bb7:  rmdir(0x7FBE61640B10, 0x0, 0x0)         = 0 0
92665/0xf94bb7:  sigaction(0x2, 0x7FFEEB4B4548, 0x7FFEEB4B4588)      = 0 0
92665/0xf94bb7:  sigaction(0x3, 0x7FFEEB4B4548, 0x7FFEEB4B4588)      = 0 0
92665/0xf94bb7:  sigaction(0xF, 0x7FFEEB4B4548, 0x7FFEEB4B4588)      = 0 0
92665/0xf94bb7:  sigaction(0x1E, 0x7FFEEB4B4548, 0x7FFEEB4B4588)         = 0 0
92665/0xf94bb7:  madvise(0x105752000, 0x3C000, 0x9)      = -1 Err#22
92665/0xf94bb7:  close(0xD)      = 0 0
92665/0xf94bb7:  madvise(0x1068AF000, 0x20000, 0x9)      = 0 0
92665/0xf94bb7:  madvise(0x106A11000, 0x23000, 0x9)      = -1 Err#22
92665/0xf94bb7:  close(0xE)      = 0 0
92665/0xf94bb7:  madvise(0x1068F0000, 0x20000, 0x9)      = 0 0
92665/0xf94bb7:  madvise(0x10486D000, 0x30000, 0x9)      = 0 0
92665/0xf94bb7:  madvise(0x7FBE62C25000, 0x5000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62C81000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62C83000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62C85000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62C87000, 0x2000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62C8A000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62C8F000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62C92000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62C99000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62C9E000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62CA1000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62CA3000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62CA6000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62CAB000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62CAE000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62CB2000, 0x2000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62CB6000, 0x4000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62CBB000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62CBE000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62CEA000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  madvise(0x7FBE62CFB000, 0x1000, 0x7)        = 0 0
92665/0xf94bb7:  close(0x6)      = 0 0
dtrace: error on enabled probe ID 2366 (ID 897: syscall::thread_selfid:return): invalid user access in action #5 at DIF offset 0
^@^@^@^@^@^C





  ranc-a01:~ ranc$ lsof -p 92665
COMMAND   PID USER   FD     TYPE             DEVICE   SIZE/OFF     NODE NAME
python  92665 ranc  cwd      DIR                1,4       2176 12342436 /Users/ranc/vsan_vsancertification/tools/graphrunner
python  92665 ranc  txt      REG                1,4      51744 12719059 /Users/ranc/p2dev/bin/python
python  92665 ranc  txt      REG                1,4      52768   378470 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_locale.so
python  92665 ranc  txt      REG                1,4      84240   378488 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_struct.so
python  92665 ranc  txt      REG                1,4      83232   378468 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_json.so
python  92665 ranc  txt      REG                1,4      60192   378500 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/binascii.so
python  92665 ranc  txt      REG                1,4      71392   378444 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_collections.so
python  92665 ranc  txt      REG                1,4      85136   378540 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/operator.so
python  92665 ranc  txt      REG                1,4     108192   378532 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/itertools.so
python  92665 ranc  txt      REG                1,4      59984   378462 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_heapq.so
python  92665 ranc  txt      REG                1,4      48256   378458 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_functools.so
python  92665 ranc  txt      REG                1,4     253840   378466 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
python  92665 ranc  txt      REG                1,4      73456   378552 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/strop.so
python  92665 ranc  txt      REG                1,4     200880   378448 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_ctypes.so
python  92665 ranc  txt      REG                1,4      65952   378558 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/time.so
python  92665 ranc  txt      REG                1,4      88816   378494 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/array.so
python  92665 ranc  txt      REG                1,4      78896   378534 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/math.so
python  92665 ranc  txt      REG                1,4      58240   378460 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_hashlib.so
python  92665 ranc  txt      REG                1,4      52656   378478 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_random.so
python  92665 ranc  txt      REG                1,4      57040   378508 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/cStringIO.so
python  92665 ranc  txt      REG                1,4      74592   378446 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_csv.so
python  92665 ranc  txt      REG                1,4      43536   378526 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/grp.so
python  92665 ranc  txt      REG                1,4      65184   378562 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/zlib.so
python  92665 ranc  txt      REG                1,4     144736   378482 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_socket.so
python  92665 ranc  txt      REG                1,4     172352   378486 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_ssl.so
python  92665 ranc  txt      REG                1,4      44752   378480 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_scproxy.so
python  92665 ranc  txt      REG                1,4      43708 12722902 /Users/ranc/p2dev/lib/python2.7/site-packages/_scandir.so
python  92665 ranc  txt      REG                1,4     152272   378514 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/datetime.so
python  92665 ranc  txt      REG                1,4      65920   378550 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/select.so
python  92665 ranc  txt      REG                1,4      52048   378520 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/fcntl.so
python  92665 ranc  txt      REG                1,4      67920   378476 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_multiprocessing.so
python  92665 ranc  txt      REG                1,4     146112   378506 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/cPickle.so
python  92665 ranc  txt      REG                1,4      52048   378548 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/resource.so
python  92665 ranc  txt      REG                1,4      84000   378504 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/bz2.so
python  92665 ranc  txt      REG                1,4      43104   378430 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_bisect.so
python  92665 ranc  txt      REG                1,4     104256   378544 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/pyexpat.so
python  92665 ranc  txt      REG                1,4      25512 15160994 /Users/ranc/p2dev/lib/python2.7/site-packages/tornado/speedups.so
python  92665 ranc  txt      REG                1,4     138464   378452 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_curses.so
python  92665 ranc  txt      REG                1,4    1409984   378560 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/unicodedata.so
python  92665 ranc  txt      REG                1,4      27108 12722492 /Users/ranc/p2dev/lib/python2.7/site-packages/markupsafe/_speedups.so
python  92665 ranc  txt      REG                1,4      43588 14636845 /Users/ranc/p2dev/lib/python2.7/site-packages/_billiard.so
python  92665 ranc  txt      REG                1,4      65776   378536 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/mmap.so
python  92665 ranc  txt      REG                1,4       4096 20515699 /private/var/folders/d9/xww6x1gj50j9769f0x47nw_h0000gp/T/pymp-kJBMDs/pym-92665-St6myq
python  92665 ranc  txt      REG                1,4     841456  2716638 /usr/lib/dyld
python  92665 ranc  txt      REG                1,4 1172373504 13558190 /private/var/db/dyld/dyld_shared_cache_x86_64h
python  92665 ranc    0u     CHR               16,8  0t1188168     1405 /dev/ttys008
python  92665 ranc    1u     CHR               16,8  0t1188168     1405 /dev/ttys008
python  92665 ranc    2u     CHR               16,8  0t1188168     1405 /dev/ttys008
python  92665 ranc    3     PIPE 0x75a36a27dcf37cad      16384          ->0x75a36a27dcf355ad
python  92665 ranc    4     PIPE 0x75a36a27dcf355ad      16384          ->0x75a36a27dcf37cad
python  92665 ranc    5     PIPE 0x75a36a27dcf3746d      16384          ->0x75a36a27dcf36dad
python  92665 ranc    6r     CHR               14,1    0t15192      584 /dev/urandom
python  92665 ranc    7     PIPE 0x75a36a27dcf36dad      16384          ->0x75a36a27dcf3746d
python  92665 ranc    8u     REG                1,4       4096 20515699 /private/var/folders/d9/xww6x1gj50j9769f0x47nw_h0000gp/T/pymp-kJBMDs/pym-92665-St6myq
python  92665 ranc    9u     REG                1,4       4096 20515699 /private/var/folders/d9/xww6x1gj50j9769f0x47nw_h0000gp/T/pymp-kJBMDs/pym-92665-St6myq
python  92665 ranc   10r  PSXSEM                           0t0          /mp-r6SMtW
python  92665 ranc   11     PIPE 0x75a36a27dcf351ed      16384          ->0x75a36a27dcf36e6d
python  92665 ranc   12u   systm 0x75a36a27dd0002cd        0t0          [ctl com.apple.netsrc id 8 unit 47]
python  92665 ranc   13u    IPv4 0x75a36a280ae00f75        0t0      TCP 10.117.234.174:62477->prme-vsan-hol-vm-dhcp-218-6.eng.vmware.com:amqp (ESTABLISHED)
python  92665 ranc   14u    IPv4 0x75a36a27fae89f75        0t0      TCP 10.117.234.174:62480->prme-vsan-hol-vm-dhcp-218-6.eng.vmware.com:amqp (ESTABLISHED)
python  92665 ranc   15u    IPv4 0x75a36a27db0e88d5        0t0      TCP 10.117.234.174:62485->prme-vsan-hol-vm-dhcp-218-6.eng.vmware.com:amqp (ESTABLISHED)
python  92665 ranc   16     PIPE 0x75a36a27dcf351ed      16384          ->0x75a36a27dcf36e6d

λˆ„κ΅°κ°€ gevent ν•¨κ»˜μ΄ λ²„κ·Έκ°€μ—†λŠ” 버전을 발견 ν–ˆμŠ΅λ‹ˆκΉŒ?

eventlet ) μ‚¬μš©ν•˜μ—¬μ΄ 문제 (λ˜λŠ” μœ μ‚¬ν•œ 문제)κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” μ—¬λŸ¬λΆ„!
μ…€λŸ¬λ¦¬μ˜ 경우 +1 4.4.6.
λ‚˜λŠ” 였늘이 λ¬Έμ œκ°€ μžˆμ—ˆλ‹€) μœ„μ˜ 의견과 λ‚΄ μ„œλ²„μ— λŒ€ν•œ μ‹ μ€‘ν•œ 쑰사 덕뢄에 문제λ₯Ό λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€)
RabbitMQ 및 Redis의 문제)
이 문제λ₯Ό ν•΄κ²°ν•˜λ €λ©΄ RabbitMQ 및 Redis 용 HAProxyλ₯Ό μ„€μΉ˜ν•΄μ•Όν•©λ‹ˆλ‹€) μ•ˆνƒ€κΉκ²Œλ„ 연결이 λŠμ–΄μ§€κ³ μ΄ μ‹¬κ°ν•œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. λ¬Έμ„œμ— μΆ”κ°€ 정보가 μžˆμŠ΅λ‹ˆλ‹€.)
https://www.rabbitmq.com/networking.html#proxy -effects

CELERY_BROKER_URL-RabbitMQ
CELERY_RESULT_BACKEND-Redis

이 데이터가 μ€‘μš”ν•˜κΈ° λ•Œλ¬Έμ— μž‘μ—…μ΄ μ •ν™•ν•˜κ²Œ μ‹€ν–‰λ˜λ„λ‘ μ…€λŸ¬λ¦¬ μž¬μ‹œλ„ 및 기타 맀개 λ³€μˆ˜λ„ κ΅¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€.)
gevent μœ λ¬΄μ— 관계없이 μž‘λ™) 이것이 λ§Žμ€ λ„μ›€μ΄λ˜κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€)

μ…€λŸ¬λ¦¬λŠ” λ¬Έμ œκ°€ μ•„λ‹™λ‹ˆλ‹€!

μ…€λŸ¬λ¦¬λŠ” λ¬Έμ œκ°€ μ•„λ‹™λ‹ˆλ‹€!

예, Celeryκ°€ λ¬Έμ œμž…λ‹ˆλ‹€. 그렇지 μ•ŠμœΌλ©΄ Celery 3둜 λ‹€μš΄ κ·Έλ ˆμ΄λ“œν•΄λ„ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@alanhamlett μ•ˆλ…•ν•˜μ„Έμš”)
HAProxy둜 5 일 이상 μž‘μ—…ν–ˆμœΌλ©° λͺ¨λ“  것이 μ •μƒμž…λ‹ˆλ‹€)
λ‚˜λŠ” 항상이 였λ₯˜κ°€ λ°œμƒν–ˆκ³  λ‚΄ μž‘μ—…μžλŠ” λͺ‡ λΆ„ λ§Œμ— μΆ©λŒν–ˆμŠ΅λ‹ˆλ‹€)

λ‚˜λŠ” 이것이 μ…€λŸ¬λ¦¬μ—μ„œ κ³ μΉ  수 μžˆλ‹€λŠ” 것을 μ΄ν•΄ν•˜μ§€λ§Œ μˆ˜μ •μ€ 맀우 였래 걸릴 수 μžˆμŠ΅λ‹ˆλ‹€) 논리λ₯Ό HAProxy처럼 μž‘λ™ν•˜κ²Œ λ§Œλ“œλŠ” 것은 μ–΄λ ΅μŠ΅λ‹ˆλ‹€)

ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€) HAProxyλŠ”μ΄ 문제λ₯Ό μ™„λ²½ν•˜κ²Œ ν•΄κ²°ν•©λ‹ˆλ‹€)

+1 @duydo와 λ™μΌν•œ 증상
μ…€λŸ¬λ¦¬ 4.4.7

이것이 μ–΄λ–»κ²Œ ν•΄κ²°λ˜μ§€ μ•Šμ•˜λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

39315 File "/usr/local/lib64/python3.6/site-packages/gevent/_socket3.py", line 534, in sendall 39316 return _socketcommon._sendall(self, data_memory, flags) 39317 File "/usr/local/lib64/python3.6/site-packages/gevent/_socketcommon.py", line 392, in _sendall 39318 timeleft = __send_chunk(socket, chunk, flags, timeleft, end) 39319 File "/usr/local/lib64/python3.6/site-packages/gevent/_socketcommon.py", line 321, in __send_chunk 39320 data_sent += socket.send(chunk, flags) 39321 File "/usr/local/lib64/python3.6/site-packages/gevent/_socket3.py", line 515, in send 39322 return self._sock.send(data, flags) 39323 BrokenPipeError: [Errno 32] Broken pipe

getpid() = 6 epoll_wait(3, [{EPOLLIN, {u32=125, u64=266287972477}}], 262, 767) = 1 recvfrom(125, "\1\0\1\0\0\0#", 7, 0, NULL, NULL) = 7 recvfrom(125, "\0<\0<\6None12\0\0\0\0\0\0\4\220\0\rcelery.pidb"..., 35, 0, NULL, NULL) = 35 recvfrom(125, "\316", 1, 0, NULL, NULL) = 1 recvfrom(125, "\2\0\1\0\0\0G", 7, 0, NULL, NULL) = 7 recvfrom(125, "\0<\0\0\0\0\0\0\0\0\0c\370\0\20application/json\5"..., 71, 0, NULL, NULL) = 71 recvfrom(125, "\316", 1, 0, NULL, NULL) = 1 recvfrom(125, "\3\0\1\0\0\0c", 7, 0, NULL, NULL) = 7 recvfrom(125, "{\"method\": \"enable_events\", \"arg"..., 99, 0, NULL, NULL) = 99 recvfrom(125, "\316", 1, 0, NULL, NULL) = 1 getpid() = 6 write(2, "[2020-10-18 01:21:47,952: DEBUG/"..., 112) = 112 recvfrom(125, 0x7f8fbffe1078, 7, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable) getpid() = 6 epoll_wait(3, [], 262, 108) = 0 getpid() = 6 epoll_wait(3, [], 262, 805) = 0 recvfrom(6, 0x7f8fbffe1de8, 7, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable) getpid() = 6 epoll_wait(3, [], 262, 85) = 0 recvfrom(125, 0x7f8fbffe1d98, 7, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable) getpid() = 6 epoll_wait(3, ^Cstrace: Process 4844 detached

@yshaban HAProxy λ₯Ό μ‚¬μš©ν•΄ λ³΄μ…¨μŠ΅λ‹ˆκΉŒ?

@yshaban HAProxy λ₯Ό μ‚¬μš©ν•΄ λ³΄μ…¨μŠ΅λ‹ˆκΉŒ?

였늘 haproxy 뒀에 λ‚΄ 물건이 λΆ™μ–΄ 있으면 μ•Œλ € λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

@yshaban HAProxy λ₯Ό μ‚¬μš©ν•΄ λ³΄μ…¨μŠ΅λ‹ˆκΉŒ?

Rostislavκ°€ μ œμ•ˆν–ˆλ“―μ΄ rabbitmq ν΄λŸ¬μŠ€ν„°λ₯Ό λ§Œλ“€κ³  haproxy 뒀에 뢙이면 λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

νŠΈμœ— λ‹΄μ•„ κ°€κΈ°

이것은 haproxyλ₯Ό μ‚¬μš©ν•  λ•Œλ§Œ μˆ˜μ •λ˜μ§€λ§Œ, RabbitMQ와 ν•¨κ»˜ Celeryλ₯Ό 직접 μ‚¬μš©ν•  λ•Œ 버그가 μ—¬μ „νžˆ μ‘΄μž¬ν•©λ‹ˆλ‹€.

+1 μ…€λŸ¬λ¦¬ v5.0.1

μ…€λŸ¬λ¦¬ 4.3, haproxyλŠ” 문제λ₯Ό ν•΄κ²°ν•©λ‹ˆλ‹€. μ—¬λŸ¬λΆ„μ€ μ‹œλ„ν•΄μ•Όν•©λ‹ˆλ‹€.

Celeryμ—μ„œ Haproxyλ₯Ό ν•„μˆ˜ μ‚¬μš©μœΌλ‘œ μ„€μ •ν•˜κ±°λ‚˜μ΄ 문제λ₯Ό λ‹€μ‹œ μ—½λ‹ˆ λ‹€.

λ¬Έμ œμ—λŠ” μ‹€ν–‰ κ°€λŠ₯ν•œ ν•­λͺ©μ΄ ν•„μš”ν•©λ‹ˆλ‹€.
이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 방법을 λͺ¨λ₯΄κ³ μ΄ 문제λ₯Ό μž¬ν˜„ ν•  μˆ˜μžˆλŠ” ν™˜κ²½μ΄ μ—†κΈ° λ•Œλ¬Έμ—μ΄ 문제λ₯Ό μž¬ν˜„ν•˜λŠ” ν™˜κ²½μ— μ•‘μ„ΈμŠ€ ν•  μˆ˜μžˆλŠ” μ‚¬λžŒμ΄ μˆ˜μ •ν•΄μ•Ό ν•  사항에 λŒ€ν•œ 톡찰λ ₯을 제곡 ν•  μˆ˜μžˆμ„ λ•ŒκΉŒμ§€ 폐쇄 μƒνƒœλ₯Ό μœ μ§€ν•΄μ•Όν•œλ‹€κ³  λ§ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. 뭐가 잘λͺ» λ˜μ—ˆ λ‹ˆ.

λ‚˜λŠ” λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ μ…€λŸ¬λ¦¬ 내에 λΆ„λͺ…νžˆ 이것이 λ°œμƒν•˜λŠ” κ·Όλ³Έ 원인이 있고 문제λ₯Ό ν•΄κ²°ν•˜λŠ” λ™μ•ˆ haproxy 뒀에 κ³ μ°©ν•˜λŠ” 것이 근본적인 원인을 닀루지 μ•ŠλŠ”λ‹€λŠ” 데 λ™μ˜ν•©λ‹ˆλ‹€.

λ‚˜λŠ” λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ μ…€λŸ¬λ¦¬ 내에 λΆ„λͺ…νžˆ 이것이 λ°œμƒν•˜λŠ” κ·Όλ³Έ 원인이 있고 문제λ₯Ό ν•΄κ²°ν•˜λŠ” λ™μ•ˆ haproxy 뒀에 κ³ μ°©ν•˜λŠ” 것이 근본적인 원인을 닀루지 μ•ŠλŠ”λ‹€λŠ” 데 λ™μ˜ν•©λ‹ˆλ‹€.

λ‚΄ μ˜μ‹¬μ€ amqp 전솑이 비동기가 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— 연결이 였래 μ§€μ†λ˜μ§€ μ•Šμ„ 수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

이 λ¬Έμ œμ— 직면 ν•œ μ‚¬λžŒλ“€μ€ # 6528을 ν™•μΈν•˜κ³  μ‹œλ„ν•΄ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

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