25

私はRuby on Railsアプリケーションを仮想Linuxサーバー上で実行していますが、これは1GBのRAMで制限されています。現在、私は常に限界に打ち勝っており、メモリ使用率を最適化したいと考えています。私が見ている選択肢の1つは、ユニコーン労働者の数を減らすことです。ユニコーン:どのワーカープロセスを使用するのですか?

ユニコーン労働者の使用数を確認するにはどうすればよいですか?

現在の設定は10人ですが、GoogleアナリティクスのReal-Timeで見た1秒あたりのリクエストの最大数は3です(ピーク時に1回、99%で1回を超えないリクエスト/秒)。

私は今のところ4人の労働者と一緒に行くことができますが、予期せぬ量の要求に余裕をもたせることはできません。 私はUbuntuマシン上で作業者の数とそのために使用できるツールは何かを判断するための目安とは何か?

答えて

42

あなたが使用する必要がある労働者の量は、アプリ自体が何をしているのか、どのようにそれらのことをしているのかによって大きく異なります。不幸にも、テストケースごとに機能する完璧な比率の式は実際にはありません。これは、サーバを維持する必要があるRAMの量が限られているという事実を考慮に入れると、さらに真実になります。

多くの人がCPU Core Count + 1を提案しますが、これも正しくありません。あなたは、存在する労働者の量が異なるテストケースを実行し、どのように行動するかを見なければなりません。定期的にログを確認してください。それがうまく機能して起こっても、さらにはそれらに注意を喚起することができ、多くの異なるもののためにサーバーをチェックすることができhttp://www.nagios.org

:我々のチームで

は、我々は、Nagiosと呼ばれるプログラムを使用します。完璧なバランスを見つけようとすると、これは多くのお手伝いをすることができます。

また、単にレールインスタンスを実行しているだけでなく、スクリプトを実行していたり​​、必要でない情報を処理している可能性もあります。できるだけ多くのCPUサイクルとRAMを節約するなど、サーバーが実行していない作業をしていないことを確認してください。また

、私たちは私たちのプロジェクトで行うと、それは非常に貴重である、あなたはユニコーンがあり、この機能を実装していることを確認してください。

メモリー成長労働者があまりにも多くのメモリ、神やMONITを使用している場合は はQUIT信号を送信できます。これは、現在の要求を完了した後に労働者に死ぬことを伝えます( )。作業員が死亡するとすぐに、マスターは即座に要求を処理できる新しいものを作成します( )。このように我々は あなたの接続の中間リクエストを殺すかスタートアップを取る必要はありません ペナルティ。 - から撮影:私はそれが役に立てば幸い

https://serverfault.com/q/369811/110682

https://github.com/blog/517-unicorn

また、私はあなたにいくつかの洞察力を与える可能性があり、この同様の問題を発見しました。

+0

丁寧な回答と、これを書いている時間をいただきありがとうございます。私はそれが非常に役立つと思う! – emrass

+0

@ blackbird07大歓迎です、私はあなたを助けることができてうれしいです。メモリの最適化と幸運。 –

関連する問題