8

すでに1つの大きなRailsアプリが実行されているVPSサーバーでいくつか(> 2)の小さなRackベースのアプリを実行したいと思います。

Railsアプリは従来のペア「Unicorn+nginx」を使用しており、VPSマシンにあるRAMリソースのほとんどを必要とします。

アプリごとに同様のUnicorn構成を追加しようとしましたが、RAMリソースが不足していました。

だから私の質問は:すべてのSinatraアプリを一度に実行できるようにする1つの小さなトリッキーなメモリ節約サーバーをセットアップすることは可能ですか?

更新:それが重要な場合に備えて、私はパフォーマンスについてはあまり気にしません。これらのアプリは、深刻な仕事をすることを目的としていません。

UPDATE2:Nginxと共有されるソケットに基づくアプローチは、ポートを使用するアプローチよりも優先されます。

ありがとう!

4

1 に答える 1

5

私はこの質問を自分で調べましたが、1つのWebサーバーですべての小さなアプリを一度に実行できる解決策を見つけたと思います。

これは、Remi Taylor( Githubの@remihttps://github.com/remi/rack-stackによって作成されたRackStacknot -yet-a-gemに基づいています。

RackStackはRack::Builderに触発されており、このようなタスクを実行するのにも適しているようです。RackStackはさらに同じ方向に進み、「スタック」機能を非常に便利で便利な方法で抽象化します。

これは、2つのサンプルアプリ(SinatraとRack)で構成されるRackStackのデモです: https ://github.com/stanislaw/skeletons/tree/master/rack_stack 。実サーバーでのスタックアプリの動作を模倣するために、/ etc / hostsファイルを変更して、localhost2ホストが127.0.0.1を指すようにしました。

シンサーバーを起動してから、localhostまたはlocalhost2でリクエストを実行します。「localhost」へのリクエストはFirstAppによって処理され、「localhost2」へのリクエストはSecondAppによって処理されます。

実サーバーでアプリをテストするときに発生する可能性のある問題を予測することはできませんが、このアプローチはまさに私が探していたもののようです。実サーバーでは、NginxがリクエストをThinサーバーがリッスンするソケットへのラックアプリに関連付けられているすべてのホスト。そのため、RackStackは、スタックにあるアプリに宛てられたリクエストのみに対応します。

提案、このスキームの改善、または代替案は引き続き歓迎されます!

于 2012-08-26T21:47:56.640 に答える