Wir führen Postgres 9.3 aus und haben gelegentlich Deadlock-Probleme. Derzeit bemerkt jemand die Prozesse und beendet sie manuell. Gibt es eine bewährte Methode, um mit diesen umzugehen, wenn sie auftreten? Ich weiß, dass es eine gibt statement_timeout
, lock_timeout
und deadlock_timeout
die meisten Stellen, die ich lese, geben an, dass Sie dies nicht in der postgres.conf
Datei festlegen möchten .
Ich wollte nur sehen, ob es dafür eine typische / Best-Practice-Methode gibt. Es sieht so aus, als würde es ausreichen, deadlock_timeout auf ungefähr 10 Minuten zu setzen, aber ich wollte sicherstellen, dass mir kein Schlüssel fehlt, warum das eine schlechte Idee wäre.
postgresql
postgresql-9.3
locking
deadlock
Toolman21
quelle
quelle
Antworten:
10 Minuten ist eine extrem hohe Einstellung für
deadlock_timeout
, was auch erklären kann, warum Sie sogar die Möglichkeit haben, manuell einzugreifen. Der Standardwert ist 1 Sekunde und das Handbuch empfiehlt :Ich erwarte nicht, dass Ihre typischen Transaktionen 10 Minuten überschreiten . Versuchen Sie es mit etwa 20 Sekunden, wenn Sie lange laufende Abfragen haben.
Die beste Verteidigung gegen Deadlocks ist auch hier dokumentiert :
Wenn Sie dies konsequent tun, besteht keine Chance auf einen Deadlock.
quelle