0

Rails 3.2.12 アプリをローカルと DotCloud にセットアップしました。Dotcloud で ActiveRecord (postgres) のパフォーマンスが非常に遅く、その理由がわかりません。

Page Load Macbook Air (開発モードの Rails アプリ):

Completed 200 OK in 617ms (Views: 361.3ms | ActiveRecord: 39.1ms)

ページ ロード DotCloud (本番モードの Rails アプリ、同一の DB とページ):

Completed 200 OK in 796ms (Views: 315.3ms | ActiveRecord: 329.4ms)

これは不規則な時間ではありませんが、すべてのページの読み込みにおける標準的なパフォーマンス デルタです。私のデータベースは 16MB しかないので、大きくはありません。postgres サービスのメモリ割り当ては十分 (128MB) で、30MB しか使用されていません。ローカルの postgres.conf を確認したところ、設定はデフォルトの調整されていない postgresql.app 設定です。

このパフォーマンスの低さは、クラウドに期待できることですか? Web サーバーと db サーバー間のネットワーク遅延ですか?

これをデバッグして修正する方法について考えていただければ幸いです。

4

1 に答える 1

1

dotCloudの従業員として、アプリケーションを徹底的に調べて、期待どおりに動作しない理由を確認したい場合は、サポート チケットを提出する必要があることをお伝えしなければなりません。また、サンドボックス モードを使用している場合は、有料層 (ライブやエンタープライズなど) のいずれかを使用していた場合と比較して、パフォーマンスが低下することが予想されることもお伝えしておく必要があります。

ただし、仲間の開発者として、ローカル開発環境とdotCloud環境の 2 つの重要な違いを簡単に指摘できます。

  1. 開発環境では、同じホスト上で DBMS (PostgreSQL) と Rails アプリを実行し、データベースへのラウンドトリップによって生じる顕著なレイテンシを排除します。dotCloud では、これらは別々のホストにある可能性が高く、別々のデータセンターにある可能性さえあります。

  2. あなたの開発環境はおそらくソリッド ステート ドライブ (SSD) を使用しており (MacBook Air の使用年数によって異なります)、ネットワーク接続型ストレージ (ハードディスク ドライブ) の形式である EBS (Amazon Elastic Block Store) に移動したばかりです。

これら 2 つの変更の間で、応答時間の増加にまったくショックを受けているわけではありませんが、全体的な応答時間は 180 ミリ秒しか増加していないのに、ActiveRecord の時間が 290 ミリ秒増加したことに好奇心をそそられます。

応答時間がどこで食い尽くされているかを推測したくはありません。そのため、詳しく調査できるように、できるだけ早くsupport.dotcloud.com でサポート チケットを提出することをお勧めします。その場合は、私の名前またはこの StackOverflow スレッドに言及し、アプリの URL を含めてください。

于 2013-03-07T04:59:46.250 に答える