データベースへの接続の再確立を開始した後、この問題は解決されました。 sequel
を使用していました プロジェクトで、PassengerはActiveRecordが使用されている場合にのみ問題自体を処理します。
それを拡張するために、デフォルトでは、Passengerはrubyアプリにスマートスポーンを使用します。最初に、フレームワークとすべてのライブラリをロードするプリローダープロセスを生成します。その後、プリローダープロセスは、必要に応じてワーカープロセスを生成し、リクエストを処理します。ワーカープロセスを生成する場合、すべてのファイル記述子はプリローダープロセスから継承されます。したがって、データベースへの接続を再確立しない場合、すべてのワーカープロセスは、プリローダーによって確立された1つを共有します。これはあらゆる種類の奇妙な行動につながります。リクエストに時間がかかりすぎるようです。
その前に、WebSocket接続の処理も別のプロセスに移動しました。ただし、それが問題の原因であるかどうかはわかりません。
詳細はこちら:
コードプリロードでフォークWebサーバーを使用している場合は切断
意図しないファイル記述子の共有
サブURIの下で同じホストとポートでアクションケーブルサーバーを実行する