システム管理者になると、私は本当の初心者です。 EC2MicroInstanceでアプリを実行しています。
公開する前に、パフォーマンスが最低レベルに達していることを確認したいと思います。私はいくつかのストレステストを試していますが、自分のパフォーマンスを理解するのに役立つ良いコンプを見つけるのに苦労しました。
私は間違いなく最も負荷の高いページをテストしましたが、これが立ち上げたばかりのWebサイトに十分適しているかどうか、そして最良のシナリオでは、プレスが適切にヒットした場合、1週間で10,000のユニークを見ることができるかどうか興味があります。
ab -n 5000 -c 10 http://mysite.com
requests/sec: 53.36
time per request: 18.739 ms
transfer rate: 12.66kb
total transferred 1215000 bytes
失敗したリクエストはありません。私のCPUは約49%で最高になり、メモリはそれほど課税されませんでした。負荷平均は5.70で急上昇しました。
リクエストの95%は500ミリ秒以内に処理されました。 1つのリクエストには84996ミリ秒かかりました。
Ubuntu10.4でmod_wsgiとともにApache2.xを使用しています。 MPMはPreforkだと確信しています。このサーバーはテストモードであるため、外部からの負荷はありません。
ここでは並行性が大きな問題のようです。それを削除すると、サーバーは非常に高速です。 10を超える同時実行性を追加すると、「指定されたタイムアウトが期限切れになりました(70007)」というエラーが表示されます。
私は始めたばかりなので、これはすべて議論の余地があるかもしれません。意見を聞きたいです。
ありがとう。
Prefork Apacheをチューニングするときに私が見るいくつかのこと:
MaxClientsとServerLimitを確認してください。これにより、サーバーは一度に実行できるプロセスの数を知ることができます。 RAMの制限と比較して、各プロセスが実行するメモリに基づいて制限する必要があります。サーバーで実行されている他のプログラム(システム、MySQLなど)用にメモリを残してください)
StartServer、MinSpareServers、MaxSpareServersを確認してください。着信要求を処理するのに十分なプロセスでサーバーを起動し、負荷を処理するのに十分な量を維持していることを確認してください。新しいスレッドを作成するコストは比較的高く、リクエストの速度が低下します。
KeepAliveTimeoutを実際に低く保ちます。これは基本的に、次のリクエストに進む前に、プロセスがさらにリクエストをキャプチャするのに十分な時間開いたままになる時間です。プレフォークの場合、私は2 KeepAliveTimeout 2
ほんの少しのポインタ...これが役立つことを願っています
EC2マイクロインスタンスにはCPUバーストがあることに注意してください。最大2つのコンピューティングユニットを使用できますが、使用できるのは短期間のみです。その(かなり短い)期間の後、CPU使用率は数分間厳しく制限されます。
より一貫したパフォーマンスが必要な場合は、スモールインスタンスタイプに移動してください。