私は、トラフィック量が比較的少ないサイトを持っており、通常は3〜4人の乗客インスタンスによって喜んで提供されます。
ただし、完了までに最大15〜20秒かかる可能性のある多数の自動リクエストによって打撃を受けることがあります。これにより、グローバルキューがバックアップされ、サーバーが通常のユーザーに応答しなくなります。
----------- General information ------
max = 18
count = 18
active = 17
inactive = 1
Waiting on global queue: 115
15分後、Apacheを再起動してキューをクリアした後、すべてが正常に戻ります。
----------- General information -----------
max = 18
count = 4
active = 0
inactive = 4
Waiting on global queue: 0
----------- Application groups -----------
/apps/mailapp/current:
App root: /apps/mailapp/current
* PID: 31044 Sessions: 0 Processed: 275 Uptime: 14m 21s
* PID: 31047 Sessions: 0 Processed: 314 Uptime: 14m 21s
* PID: 31060 Sessions: 0 Processed: 284 Uptime: 14m 17s
インスタンスの最大数を18(VPSで同時に実行できる数とほぼ同じ)にプッシュしました。これは少しは役に立ちましたが、あまり役に立ちませんでした。リクエストを可能な限り最適化しました(30秒程度から15〜20秒に短縮)。
バックアップの原因となっているリクエストは自動化されているため、特にタイムリーにサービスを提供する必要はありません。この特定のリクエストを処理するだけの多数の乗客インスタンスを確保する方法はありますか? (おそらくURLパスに基づく)。
私はこれを修正しました。
インスタンスの最大数に制限があるApacheを使用して新しい仮想ホストを作成しました。
これは、元のアプリを指すようにOSでシンボリックリンクされていました。これにより、必要な数のインスタンスでメインアプリを実行できますが、シンボリックリンクされた仮想ホストで実行できるインスタンスの数には制限があります。
これにより、シンボリックリンクされたホストでのCPU使用率に関していくらか関連する問題が発生しました: Apache/Passenger and cpulimit