2016-09-07 33 views
2

多くのユーザーが接続する非常に豊富なコンテンツのインタラクティブなページを持つRails Appを用意する予定です。ProductionでActionCableを使用すると、パフォーマンスの問題が発生する可能性がありますか?

開発がうまくいっていて、Devサーバーのテストがうまくいっていませんでした。

選択したグループの人々でアルファテストを開始したときに問題が発生しました。切断人は突然停止するでしょう。キューがいっぱいになったためNginxは停止します。私はしばらくの間失っていましたが、周りを見回した後、実際の行動が完全に私の記憶を食べていたという結論に達しました。これは、ユーザーがactioncableを購読しているページを複数回読み込んだときに特に悪くなり、アクティブになり、サーバを完全に停止し、nginxのリブートによってのみ修復されます。

私は現在2コアの1GBメモリSSDを実行して、アルファテストのためにVPSサーバーを実行しています。おそらく20人の同時ユーザーがいます。そのような負荷でパフォーマンスの問題が発生していませんか?コードを修正する必要がありますか、または乗客はこれを修正しますか?

具体的な内容がなくても決定的なことは言えませんが、その情報を使って推定を行うことはできますか?

答えて

0

Nginxの設定をいくつかゴーグルしてテストした後、乗客のnginx設定にこのディレクティブを追加すると、パフォーマンスの問題が劇的に改善されたようです。

location /special_websocket_endpoint { 
     passenger_app_group_name foo_websocket; 
     passenger_force_max_concurrent_requests_per_process 0; 
    } 

ここで詳細

https://www.phusionpassenger.com/library/config/nginx/tuning_sse_and_websockets/

1

20人の同時ユーザーと1人のユーザーあたりの複数のタブは、まだ100個未満の同時Webソケット接続であり、それほど多くはありません。

私が探している最初のことは、何らかの理由でWebSocket接続やその他のリソース(開いているファイルなど)が実際のユーザーの接続を解除しても解放されない場合です。同様の動作を引き起こすレールにバグがあったので、新しいバージョンのレール/パッセンジャーを実行していることを確認してください(詳細はhttps://blog.phusion.nl/2016/07/07/actioncable-under-stress-p1/を参照してください)。

また、nginxのactioncable + passengerでは、あなたが何らかの負荷を期待するとき、良い考えではありません。 定期的なリクエストとケーブルのためにクリーンなnginxと別のレールサーバーを稼働させる場合、少なくともそのような状況ではアプリの他の部分が何らかの作業を続けます。

+0

アドバイスのおかげで、私は(5.0.0.1)あまりにもその記事を見て、それはそれかもしれないと思ったが、私のRailsと旅客(5.0.30 )は最新バージョンです。主に誰かがページをすばやくリロードしたときに発生するようです。また、この場合、プロセスを分離することは多くの時間を要する。 – Saifis

関連する問題