Problemet blev løst, efter at vi begyndte at genetablere forbindelser til databasen. Vi brugte sequel
på projektet, og Passenger håndterer kun problemet selv, når ActiveRecord bruges.
For at udvide det bruger Passenger som standard smart spawning til rubin-apps. Det afføder først preloader-processen, som indlæser rammeværket og alle bibliotekerne. Efter den præloader-proces afføder arbejdsprocesser, når behovet opstår, som håndterer anmodningerne. Når arbejdsprocesser gydes, nedarves alle filbeskrivelser fra preloader-processen. Så hvis du ikke genopretter forbindelsen til databasen, deler alle arbejdsprocesser én, etableret af preloader. Hvilket fører til alle mulige mærkelige adfærd. Ligesom anmodninger tager for lang tid.
Før det flyttede vi også håndteringen af WebSocket-forbindelser til en separat proces. Ikke sikker på, om det bidrog til problemet.
Mere om det her:
Afbryd forbindelsen, hvis du bruger Forking Webserver med kodeindlæsning
Utilsigtet fildeskriptordeling
Køring af Action Cable-serveren på den samme vært og port under en under-URI