Postgres-XL psycopg2.errors.InsufficientResources

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Gesund
User
Beiträge: 14
Registriert: Freitag 6. Mai 2022, 14:45

Moin Freunde,

ich verwende psycopg2(via web.py) um mich mit Postres-XL zu verbinden, was leider mit folgender Fehlermeldung scheitet:
psycopg2.errors.InsufficientResources: Failed to get pooled connections
HINT: This may happen because one or more nodes are currently unreachable, either because of node or network failure.
Its also possible that the target node may have hit the connection limit or the pooler is configured with low connections.
Please check if all nodes are running fine and also review max_connections and max_pool_size configuration parameters
Wenn ich mit mit dem Koordinator verbinde, dann geht es, aber ich habe dann keine Schreibrechte.
Ich kann mich aber mit psql -h 127.0.0.1 verbinden und schreiben.

max_pool_size habe ich auch schon um den Faktor 10 erhöht, allerdings auch ohne Erfolg.

Weiß jemand, woran der Fehler liegt?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Bist du dir sicher dass dein postgres-xl cluster funktioniert?

Wenn ich https://www.postgres-xl.org/documentati ... es-xl.html richtig verstehe sollten sich Anwendungen mit einem der Koordinatoren (und nur denen) verbinden und darüber auch schreiben können. Das dass nicht funktioniert bzw. nur eingeschränkt funktioniert suggeriert dass da irgendwas kaputt ist oder falsch konfiguriert ist.

Dir ist übrigens schon klar das postgres-xl scheinbar seit Jahren nicht mehr maintained wird?
Gesund
User
Beiträge: 14
Registriert: Freitag 6. Mai 2022, 14:45

DasIch hat geschrieben: Freitag 6. Mai 2022, 16:14 Bist du dir sicher dass dein postgres-xl cluster funktioniert?

Wenn ich https://www.postgres-xl.org/documentati ... es-xl.html richtig verstehe sollten sich Anwendungen mit einem der Koordinatoren (und nur denen) verbinden und darüber auch schreiben können. Das dass nicht funktioniert bzw. nur eingeschränkt funktioniert suggeriert dass da irgendwas kaputt ist oder falsch konfiguriert ist.

Dir ist übrigens schon klar das postgres-xl scheinbar seit Jahren nicht mehr maintained wird?
Danke für den Hinweis,
nein ich wusste nicht, das Postgres-XL nicht mehr gewartet wird. Was soll ich denn statdessen für ein Mehrkopf -Replikation verwenden?
Gesund
User
Beiträge: 14
Registriert: Freitag 6. Mai 2022, 14:45

Ja mein Kluster funktioniert.
Ich kann mich mit psql mit dem Koordinator verbinden und auch schreiben.
Aber wenn ich mich mit mit Psycopg2 mit dem Koordinator verbinde kann ich keine Pooled Verbindung hergestellt werden.

Wenn ich mit mit dem Datenknoten verbinde geht es(was natürlich nicht erlaubt ist, und habe dem entsprechend auch nur Leserechte).

Es muss also an der Pooled Verbindung in Python liegen.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Gesund hat geschrieben: Samstag 7. Mai 2022, 00:09 Was soll ich denn statdessen für ein Mehrkopf -Replikation verwenden?
Gar nichts, anders als für MySQL sieht es da bei Postgres sehr schlecht aus. Solltest du dies wirklich brauchen würde ich mir an deiner Stelle überlegen MySQL zu nutzen (oder DynamoDB/Cassandra).
Gesund
User
Beiträge: 14
Registriert: Freitag 6. Mai 2022, 14:45

sqlalchemy mit psycopg2 und ohne funktioniert auch nicht
Zuletzt geändert von Gesund am Samstag 7. Mai 2022, 07:45, insgesamt 1-mal geändert.
Gesund
User
Beiträge: 14
Registriert: Freitag 6. Mai 2022, 14:45

ich habe es auch mit sqlalchemy versucht, geht auch nicht:
from sqlalchemy import create_engine

db_string = "postgresql://user_:xxxx/qPKILJvlTzO2eTqK9VpC79QHcUH/zm@127.0.0.1/db"

db = create_engine(db_string)

# Create
db.execute("CREATE TABLE IF NOT EXISTS films (title text, director text, year text)")
db.execute("INSERT INTO films (title, director, year) VALUES ('Doctor Strange', 'Scott Derrickson', '2016')")

# Read
result_set = db.execute("SELECT * FROM films")
for r in result_set:
print(r)


# python3.7 test.py
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line 1820, in _execute_context
cursor, statement, parameters, context
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/default.py", line 732, in do_execute
cursor.execute(statement, parameters)
psycopg2.errors.InsufficientResources: Failed to get pooled connections
HINT: This may happen because one or more nodes are currently unreachable, either because of node or network failure.
Its also possible that the target node may have hit the connection limit or the pooler is configured with low connections.
Please check if all nodes are running fine and also review max_connections and max_pool_size configuration parameters


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "test.py", line 8, in <module>
db.execute("CREATE TABLE IF NOT EXISTS films (title text, director text, year text)")
File "<string>", line 2, in execute
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/util/deprecations.py", line 401, in warned
return fn(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line 3176, in execute
return connection.execute(statement, *multiparams, **params)
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line 1296, in execute
future=False,
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line 1602, in _exec_driver_sql
distilled_parameters,
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line 1863, in _execute_context
e, statement, parameters, cursor, context
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line 2044, in _handle_dbapi_exception
sqlalchemy_exception, with_traceback=exc_info[2], from_=e
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/util/compat.py", line 207, in raise_
raise exception
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/base.py", line 1820, in _execute_context
cursor, statement, parameters, context
File "/usr/local/lib/python3.7/dist-packages/sqlalchemy/engine/default.py", line 732, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (psycopg2.errors.InsufficientResources) Failed to get pooled connections
HINT: This may happen because one or more nodes are currently unreachable, either because of node or network failure.
Its also possible that the target node may have hit the connection limit or the pooler is configured with low connections.
Please check if all nodes are running fine and also review max_connections and max_pool_size configuration parameters
Gesund
User
Beiträge: 14
Registriert: Freitag 6. Mai 2022, 14:45

....
Zuletzt geändert von Gesund am Samstag 7. Mai 2022, 10:32, insgesamt 1-mal geändert.
Gesund
User
Beiträge: 14
Registriert: Freitag 6. Mai 2022, 14:45

Es geht, ich musste nur die Firewall freischalten.

Man das hat mir ein Tag Zeit verschwendet.

Ich wünschte es gäbe jemanden, der mir bei solchen Problemen hilft. Ich habe viele Dinge, gemacht werden müssen. Ich zahle das Gehalt jeden Abend ab und überweise es.

Da ich niemanden diskriminiere sind auch ungeschlumpfte willkommen.
Antworten