Ich stoße auf ein Problem, wenn ich Celery mit PgBouncer und PostgreSQL ausführe, nachdem ich Zeitüberschreitungen bei Leerlaufverbindungen aktiviert habe.
Mein Stack umfasst:
Django (bereitgestellt über Tornado)
Celery (Arbeiter + Beat)
PostgreSQL
PgBouncer (vor PostgreSQL)
Aufgrund einer großen Anzahl inaktiver Datenbankverbindungen, die durch Tornado + Django verursacht wurden, habe ich Leerlauf-Timeout-Einstellungen eingeführt, um PostgreSQL davor zu schützen, dass ihm die Verbindungen ausgehen.
PgBouncer
[2025-12-16 06:12:01,578: ERROR/MainProcess] Unrecoverable error: DatabaseError('client_idle_timeout\nserver closed the connection unexpectedly\n\tThis probably means the server terminated abnormally\n\tbefore or while processing the request.\n',)
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/celery/worker/__init__.py", line 351, in start
component.start()
File "/usr/local/lib/python2.7/site-packages/celery/worker/consumer.py", line 393, in start
self.consume_messages()
File "/usr/local/lib/python2.7/site-packages/celery/worker/consumer.py", line 885, in consume_messages
self.connection.drain_events(timeout=10.0)
File "/usr/local/lib/python2.7/site-packages/kombu/connection.py", line 276, in drain_events
return self.transport.drain_events(self.connection, **kwargs)
File "/usr/local/lib/python2.7/site-packages/kombu/transport/virtual/__init__.py", line 760, in drain_events
item, channel = get(timeout=timeout)
File "/usr/local/lib/python2.7/site-packages/kombu/transport/virtual/scheduling.py", line 39, in get
return self.fun(resource, **kwargs), resource
File "/usr/local/lib/python2.7/site-packages/kombu/transport/virtual/__init__.py", line 780, in _drain_channel
return channel.drain_events(timeout=timeout)
File "/usr/local/lib/python2.7/site-packages/kombu/transport/virtual/__init__.py", line 578, in drain_events
return self._poll(self.cycle, timeout=timeout)
File "/usr/local/lib/python2.7/site-packages/kombu/transport/virtual/__init__.py", line 287, in _poll
return cycle.get()
File "/usr/local/lib/python2.7/site-packages/kombu/transport/virtual/scheduling.py", line 39, in get
return self.fun(resource, **kwargs), resource
File "/usr/local/lib/python2.7/site-packages/djkombu/transport.py", line 31, in _get
m = Queue.objects.fetch(queue)
File "/usr/local/lib/python2.7/site-packages/djkombu/managers.py", line 18, in fetch
queue = self.get(name=queue_name)
File "/usr/local/lib/python2.7/site-packages/django/db/models/manager.py", line 132, in get
return self.get_query_set().get(*args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 344, in get
num = len(clone)
File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 82, in __len__
self._result_cache = list(self.iterator())
File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 273, in iterator
for row in compiler.results_iter():
File "/usr/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 680, in results_iter
for rows in self.execute_sql(MULTI):
File "/usr/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 735, in execute_sql
cursor.execute(sql, params)
File "/usr/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 44, in execute
return self.cursor.execute(query, args)
DatabaseError: client_idle_timeout
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
[2025-12-16 06:12:02,291: INFO/MainProcess] Celerybeat: Shutting down...
Fragen:
Ist dies ein bekanntes Problem bei der Verwendung von Celery mit PgBouncer-Leerlauf-Timeouts?
Sind diese Timeout-Werte mit lang laufenden Celery-Workern nicht kompatibel?
Was ist die empfohlene Methode zur Konfiguration von PgBouncer/PostgreSQL-Leerlauf? Timeouts, wenn Sellerie involviert ist?
Für Hinweise oder Best Practices wäre ich sehr dankbar. Vielen Dank im Voraus!
Ich stoße auf ein Problem, wenn ich Celery mit PgBouncer und PostgreSQL ausführe, nachdem ich Zeitüberschreitungen bei Leerlaufverbindungen aktiviert habe. Mein Stack umfasst: [list] [*]Django (bereitgestellt über Tornado)
[*]Celery (Arbeiter + Beat)
[*]PostgreSQL
[*]PgBouncer (vor PostgreSQL)
[/list] Aufgrund einer großen Anzahl [b]inaktiver Datenbankverbindungen[/b], die durch Tornado + Django verursacht wurden, habe ich Leerlauf-Timeout-Einstellungen eingeführt, um PostgreSQL davor zu schützen, dass ihm die Verbindungen ausgehen. PgBouncer [code]idle_transaction_timeout=240 (4mins) client_idle_timeout=240 [/code] PostgreSQL [code]idle_in_transaction_session_timeout=300000 (5mins) idle_session_timeout=300000 (5mins) [/code] [b]Problem:[/b] Nach dem Anwenden dieser Einstellungen stürzt Celery gelegentlich mit der folgenden Fehlermeldung ab: [code][2025-12-16 06:12:01,578: ERROR/MainProcess] Unrecoverable error: DatabaseError('client_idle_timeout\nserver closed the connection unexpectedly\n\tThis probably means the server terminated abnormally\n\tbefore or while processing the request.\n',) Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/celery/worker/__init__.py", line 351, in start component.start() File "/usr/local/lib/python2.7/site-packages/celery/worker/consumer.py", line 393, in start self.consume_messages() File "/usr/local/lib/python2.7/site-packages/celery/worker/consumer.py", line 885, in consume_messages self.connection.drain_events(timeout=10.0) File "/usr/local/lib/python2.7/site-packages/kombu/connection.py", line 276, in drain_events return self.transport.drain_events(self.connection, **kwargs) File "/usr/local/lib/python2.7/site-packages/kombu/transport/virtual/__init__.py", line 760, in drain_events item, channel = get(timeout=timeout) File "/usr/local/lib/python2.7/site-packages/kombu/transport/virtual/scheduling.py", line 39, in get return self.fun(resource, **kwargs), resource File "/usr/local/lib/python2.7/site-packages/kombu/transport/virtual/__init__.py", line 780, in _drain_channel return channel.drain_events(timeout=timeout) File "/usr/local/lib/python2.7/site-packages/kombu/transport/virtual/__init__.py", line 578, in drain_events return self._poll(self.cycle, timeout=timeout) File "/usr/local/lib/python2.7/site-packages/kombu/transport/virtual/__init__.py", line 287, in _poll return cycle.get() File "/usr/local/lib/python2.7/site-packages/kombu/transport/virtual/scheduling.py", line 39, in get return self.fun(resource, **kwargs), resource File "/usr/local/lib/python2.7/site-packages/djkombu/transport.py", line 31, in _get m = Queue.objects.fetch(queue) File "/usr/local/lib/python2.7/site-packages/djkombu/managers.py", line 18, in fetch queue = self.get(name=queue_name) File "/usr/local/lib/python2.7/site-packages/django/db/models/manager.py", line 132, in get return self.get_query_set().get(*args, **kwargs) File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 344, in get num = len(clone) File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 82, in __len__ self._result_cache = list(self.iterator()) File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 273, in iterator for row in compiler.results_iter(): File "/usr/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 680, in results_iter for rows in self.execute_sql(MULTI): File "/usr/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 735, in execute_sql cursor.execute(sql, params) File "/usr/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 44, in execute return self.cursor.execute(query, args) DatabaseError: client_idle_timeout server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request.
[2025-12-16 06:12:02,291: INFO/MainProcess] Celerybeat: Shutting down... [/code] Fragen: [list] [*]Ist dies ein bekanntes [url=viewtopic.php?t=26065]Problem[/url] bei der Verwendung von Celery mit PgBouncer-Leerlauf-Timeouts?
[*]Sind diese Timeout-Werte mit lang laufenden Celery-Workern nicht kompatibel?
[*]Was ist die empfohlene Methode zur Konfiguration von PgBouncer/PostgreSQL-Leerlauf? Timeouts, wenn Sellerie involviert ist?
[/list] Für Hinweise oder Best Practices wäre ich sehr dankbar. Vielen Dank im Voraus!
ob es sich um G1, ZGC oder SGC handelt, es scheint, dass GC nur ausgelöst werden kann, wenn die Zuweisung eines neuen Objekts fehlschlägt. Wenn ich keine Objekte zuordne, wird mein Raum immer...
Python 3.12.3, Celery 5.3.6, Django 4.2.11, Ubuntu 22.04.4
Ich habe eine Infrastruktur von Django- und Celery-Servern, die gleichzeitig auf einem Ubuntu-Server laufen.
Für die Protokollierung...
Hat jemand Erfahrung mit der Konfiguration von Doctrine ORM für eine Postgres-Datenbank mit PGBouncer-Verbindungspooling? Wir verwenden eine von Digital Ocean verwaltete Postgres-Datenbank und dürfen...
Hat jemand Erfahrung mit der Konfiguration von Doctrine ORM für eine Postgres-Datenbank mit PGBouncer-Verbindungspooling? Wir verwenden eine von Digital Ocean verwaltete Postgres-Datenbank und dürfen...