Puncte:0

Eroare intermitentă 500 cauzată de psycopg2.OperationalError: nu s-a putut traduce numele gazdei

drapel de
Zev

20% dintre solicitările către aplicația noastră backend Django (implementată pe AWS folosind ECS și Postgres RDS) aruncă 500 de erori. Privind jurnalele ECS, sunt afișate diverse erori asociate:

psycopg2.OperationalError: nu s-a putut traduce numele gazdei „abc.efg.us-east-1.rds.amazonaws.com” la adresa
OSError: [Errno 16] Dispozitiv sau resursă ocupat
<funcția încorporată getaddrinfo>) a eșuat cu OSError

Folosim gunicorn și gevent pentru a servi aplicația noastră:

gunicorn -t 1000 -k gevent -w 4 -b 0.0.0.0:8000 backend.wsgi

Patrick Mevzek avatar
drapel cn
Nu spuneți exact ce servere de nume folosiți pentru a rezolva numele. În multe cazuri, lucrurile se îmbunătățesc mult dacă instalați pe aceeași casetă un solutor local de cache, la fel de simplu ca `unbound`, pentru a avea mai multă stabilitate și performanță în rezolvarea interogărilor DNS, mai ales dacă se învârt de multe ori aceleași nume. ..
Zev avatar
drapel de
Zev
Folosim Route53 pentru a direcționa traficul către o distribuție CloudFront, deci este awsdns. Ar trebui să fie aproape aceleași, așa că un rezolutor de cache are sens.
Patrick Mevzek avatar
drapel cn
Vorbesc în special despre un server de nume **recursiv** instalat cât mai aproape posibil (ideal, aceeași casetă) ca aplicațiile care efectuează apeluri DNS. Din experiență, acest lucru îmbunătățește lucrurile. Unde și ce sunt serverele de nume autorizate este irelevant (până când puteți demonstra că problema este într-adevăr între recursiv și autoritar și nu între aplicație și recursiv)
Zev avatar
drapel de
Zev
Bănuiesc că răspunsul la întrebarea dvs. inițială ar fi AmazonProvidedDNS. Mulțumesc pentru sugestie. Va trebui să sapă mai mult în această zonă și să o înțeleg mai bine înainte de a modifica ceva, dar îmi place sunetul soluției pe care ați sugerat-o.
Puncte:0
drapel de
Zev

getaddrinfo este o funcție gevent detaliată aici: https://www.gevent.org/dns.html

Acele documentații menționează că gevent oferă 4 solutoare. The rezolutor implicit „Rezolvarea numelui de gazdă bazată pe fire native” menționează că „au existat unele rapoarte de întârzieri mari, performanță lentă sau chiar blocări, în special în programele de lungă durată care fac multe, multe solicitări DNS”. Și recomandă schimbarea soluțiilor dacă vi se întâmplă acest lucru.

Am schimbat modul în care ne-am deservit aplicația către solutorul ares și nu am reușit să reproducem problema de când:

GEVENT_RESOLVER=ares gunicorn -t 1000 -k gevent -w 4 -b 0.0.0.0:8000 backend.wsgi

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.