私は、開発の拠点であったローカルサーバーから最終的なデプロイのために別の場所にWebアプリを移動しているところです。私は現在AWSとRackspaceを評価しており、AWSでサイトを試している最中です。私は2つの環境をできるだけ類似させようとしました。どちらも、同じバージョンのApache、phpなどを使用してFedora17上で非常に単純なLAMPスタックを実行しています。私の開発マシンは、32GBのメモリを搭載したi7860チップをベースにした自作ボックスです。 AWSでは、通常、「標準」のFedora 17インスタンスから構築されたm1.smallインスタンスを使用しています。これは、ベンチマークによって「Intel Xeon E5-2650 0 @ 1.80GHz(1コア)、メモリ:2048MB」と記述されています。私が使用しているソフトウェア。 AWSインスタンスのルートデバイスがEBSボリュームとして設定されています。
サイトは両方のボックスで稼働しており、サイトのパフォーマンスはほぼ同等であり、AWSの方が少し遅いことがわかりました。ただし、両方のサイトのソースから作成したffmpegのバージョンを介して、サイトの作業の一部としてビデオエンコーディングも行っています。ここでは、パフォーマンスに大きな違いがあり、開発サーバーはAWSよりも約10倍高速です。いくつかのベンチマークを実行しましたが、同様の違いがあります。Phoronixの「Apache」ベンチマークは、サーバーがAWSインスタンスの約12倍を実行していることを示しています。
だから、私は困惑しています。 AWSインスタンスの「E5-2650」の説明は説明のみを目的としていること、およびE5-2650をすべて備えたマシンを自分で持っているわけではないことを理解しています。しかし、これについて考える正しい方法は何ですか? E5-2650は、私のi7の約2倍の速さで、非常に高速な8コアチップのようです。多分私はそのようなマシンの1/8(8つのうち1つのコア)を効果的に持っていると考えるべきですか?それでも10倍にはなりませんが、開発マシンの(はるかに)大量のメモリが原因である可能性がありますか?または、AWSのインストールで何かを台無しにしましたか?完全なAWS初心者よりも約1ステップ上ですが、それ以上ではないので、何かを台無しにすることはかなり可能です。何かアドバイスはありますか?
私はあなたが考慮すべきいくつかのオプションがあります:
ビデオエンコーディングのパフォーマンスの違いは、CPUとはほとんど関係がない可能性があります。むしろ、IO競合を調べてください。エンコード中に、top
を実行し、ヘッダーの%wa
の値を確認してください。これは時間の割合です。サーバーはIOリクエストを待機する必要があります。この数値をできるだけ低くする必要があります。私のシステムでは、この数値が5%程度を超えると、変更を開始します。 5分間の平均。
確かに高いIO競合が発生している場合は、実行できることがいくつかあります。最初に、おそらく最も簡単なのは、プロビジョンドIOP(PIOP)EBSボリュームに移動することです。必要なIOPの数を指定できます。追加料金がかかりますが、パフォーマンスを向上させる最も簡単な方法ですIO。
何らかの理由でこれを実行したくない場合は、一連のEBSボリュームをサーバーに関連付け、それらをストライプ化してより大きなRAID0ボリュームにすることができます。この状況では、Aggregate IOが大幅に増加しますが、単一のEBSボリュームに障害が発生すると、そのボリューム上のデータが破壊されるため、リスクもはるかに高くなります。
PIOPsボリュームを試してみることをお勧めします。
考慮すべきもう1つのこと:m1.smallを実行しています。これらの小さなインスタンスでは、AWSはCPUスロットリングに対してかなり積極的であるため、c1.mediumなどのより大きなインスタンス(おそらくHigh-CPUモデル)への移行を検討することをお勧めします。 AWSがCPUを抑制している場合、top
の出力の%st
(スティール)列に高い値が表示されます。
これは一筋縄ではいかないかもしれませんが、AWSの Elastic Transcoder サービスを試してみませんか?これにより、サーバーのエンコードの負担がすべて完全になくなります。