Problemet löstes efter att vi började återupprätta anslutningar till databasen. Vi använde sequel
på projektet, och Passenger hanterar själva problemet endast när ActiveRecord används.
För att utöka det använder Passenger som standard smart spawning för ruby-appar. Det skapar först en förinlästerprocess, som laddar ramverket och alla bibliotek. Efter den förinläsningsprocessen skapar arbetsprocesser när behovet uppstår, som hanterar förfrågningarna. När arbetsprocesser skapas ärvs alla filbeskrivningar från förladdningsprocessen. Så om du inte återupprättar anslutningen till databasen, delar alla arbetsprocesser en, etablerad av preloader. Vilket leder till alla möjliga konstiga beteenden. Som att förfrågningar tar för lång tid.
Innan dess flyttade vi även hanteringen av WebSocket-anslutningar till en separat process. Inte säker på om det bidrog till problemet.
Mer om det här:
Koppla från om du använder Forking Webserver med kodförladdning
Oavsiktlig fildeskriptordelning
Köra Action Cable-servern på samma värd och port, under en sub-URI