2016-03-24 9 views
4

Ich verwende:Sellerie: socket.error timed out

celery==3.1.12 
kombu==3.0.19 
amqp==1.4.5 

Sellerie Arbeiter gestartet wurde:

celery worker --without-gossip --without-heartbeat --without-mingle 

Sellerie setiings:

CELERY_ALWAYS_EAGER = False 
CELERY_EAGER_PROPAGATES_EXCEPTIONS = True 
BROKER_URL = 'amqp://guest:[email protected]:5672//' 
BROKER_CONNECTION_TIMEOUT = 30 
CELERY_RESULT_BACKEND = "amqp" 
CELERY_TASK_RESULT_EXPIRES = 18000 # 5 hours. 
CELERY_RESULT_PERSISTENT = True 

Manchmal erhalte ich diese Fehlermeldung:

Traceback (most recent call last): 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 112, in get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/newrelic-2.18.1.15/newrelic/hooks/framework_django.py", line 492, in wrapper 
    return wrapped(*args, **kwargs) 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/django_restapi/resource.py", line 143, in __call__ 
    return self.dispatch(request, self, *args, **kwargs) 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/django_restapi/resource.py", line 76, in dispatch 
    return target.create(request, *args, **kwargs) 

    File "./kavyarnya/api/post_deploy.py", line 110, in create 
    process_commit.delay(project.id, commit, post_deploy_call.id) 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/celery/app/task.py", line 358, in delay 
    return self.apply_async(args, kwargs) 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/celery/app/task.py", line 474, in apply_async 
    **options) 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/celery/app/amqp.py", line 249, in publish_task 
    **kwargs 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/kombu/messaging.py", line 164, in publish 
    routing_key, mandatory, immediate, exchange, declare) 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/kombu/connection.py", line 470, in _ensured 
    interval_max) 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/kombu/connection.py", line 396, in ensure_connection 
    interval_start, interval_step, interval_max, callback) 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/kombu/utils/__init__.py", line 217, in retry_over_time 
    return fun(*args, **kwargs) 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/kombu/connection.py", line 246, in connect 
    return self.connection 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/kombu/connection.py", line 761, in connection 
    self._connection = self._establish_connection() 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/kombu/connection.py", line 720, in _establish_connection 
    conn = self.transport.establish_connection() 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/kombu/transport/pyamqp.py", line 115, in establish_connection 
    conn = self.Connection(**opts) 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/amqp/connection.py", line 136, in __init__ 
    self.transport = create_transport(host, connect_timeout, ssl) 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/amqp/transport.py", line 264, in create_transport 
    return TCPTransport(host, connect_timeout) 

    File "/usr/local/lib/staging/kava/.envf322d0e225b48a1bb90126f74d73812df3b92994/local/lib/python2.7/site-packages/amqp/transport.py", line 99, in __init__ 
    raise socket.error(last_err) 

error: timed out 

RabbitMq hat defult Einstellungen. https://www.rabbitmq.com/configure.html

/etc/default/rabbitmq-server : `ulimit -n 16384` 

Kaninchen log:

=WARNING REPORT==== 19-Mar-2016::00:02:17 === 
closing AMQP connection <0.30881.4> (127.0.0.1:26762 -> 127.0.0.1:5672): 
connection_closed_abruptly 

Maximale Anzahl Buchsen:

# sysctl -a | grep somax 
net.core.somaxconn = 32768 

ich durch folgende dieses Problem zu lösen versucht, Möglichkeiten:

  1. Set BROKER_HEARTBEAT = 10 - Ich habe noch schlimmer Fall
  2. Set BROKER_POOL_LIMIT = Keine - nichts im Vergleich zu aktuellen Zustand
  3. Set BOKER_CONNECTION_TIMEOUT bis 10, 20, 30 geändert - größere Timeout-Wert weniger Fehler

bringt Ich gehe davon aus, dass Timeout steigende Werte nur die reale versteckt Problem. Was ist der Grund für dieses Problem und wie kann ich es lösen? Danke

Antwort

1

Was ist die Rate der Anforderungen, die Sie behandeln möchten?

Können Sie teilen, was mit CPU-Auslastung, Speicherverbrauch, Festplatten-IO-Stats auf einer Maschine mit RabbitMQ passiert, wenn Zeitüberschreitungen auftreten?

Es scheint, dass Rabbit Verbindungen nicht schnell genug verarbeiten kann.

Als blinde Vermutung Ich schlage vor, zunehmenden Erlang VM I/O-Thread-Pool-Größe

("Erlang VM I/O-Thread-Pool" Abschnitt hier https://www.rabbitmq.com/networking.html sehen) Und vielleicht mit Kaninchen "Connection Backlog" ein wenig spielen (Siehe den gleichen Link).

Es gibt immer eine Möglichkeit, dass Sie nicht genügend Ressourcen für die Anzahl der Anfragen haben, die Sie erhalten. Daher sollten Sie Ihre Rabbit-Installation skalieren.