sql >> Databáze >  >> RDS >> PostgreSQL

Požadavky se zaseknou v PG::Connection#async_exec

Problém byl vyřešen poté, co jsme začali obnovovat připojení k databázi. Používali jsme sequel na projektu a Passenger řeší problém sám pouze při použití ActiveRecord.

Aby se to rozšířilo, ve výchozím nastavení Passenger používá inteligentní spawnování pro rubínové aplikace. Nejprve spustí proces preloader, který načte rámec a všechny knihovny. Po tomto procesu předběžného načítání se v případě potřeby vytvoří pracovní procesy, které zpracovávají požadavky. Při vytváření pracovních procesů jsou všechny deskriptory souborů zděděny z procesu preloaderu. Pokud tedy neobnovíte připojení k databázi, všechny pracovní procesy sdílejí jedno, vytvořené preloaderem. Což vede ke všem druhům podivného chování. Stejně jako žádosti trvají příliš dlouho.

Předtím jsme také přesunuli zpracování připojení WebSocket do samostatného procesu. Nejste si však jisti, zda to přispělo k problému.

Více o tom zde:

Odpojit, pokud používáte webový server Forking s předběžným načítáním kódu
Neúmyslné sdílení deskriptoru souboru
Spuštění serveru Action Cable na stejném hostiteli a portu pod sub-URI




  1. mysql.connector - Máte chybu v syntaxi SQL; poblíž '%s' na řádku 1

  2. AVG + vnitřní spojení

  3. Django, přístup k sekvenci PostgreSQL

  4. jak mohu zkontrolovat omezení cizího klíče na omezení odstranění pomocí PHP