0

ここの誰かが私にいくつかの指針を教えてくれることを願っています。単一の MySQL データベースを指す、5 つの ruby​​ インスタンスにわたって水平方向にスケーリングされた Rails アプリがあります。このアプリに対して行われる POST リクエストは、通常 600 ミリ秒の範囲で返されます。ただし、場合によっては、これらのリクエストが 50 秒以上など、信じられないほど長時間実行されることがあります。ruby コードで異常なことが起こっているようには見えません。これは、MySQL インスタンスをスケーリングする必要があるということですか? 私の知る限りでは、それほど強くはありません。確かに、1 秒間に 2 万回以上のリクエストを処理できるとは思いません。探し始める場所へのポインタをいただければ幸いです。NewRelic を使用したアプリのプロファイリングも開始しました。

Started POST "/api/something" for *** at 2012-07-16 19:00:19 +0000
  Processing by SomethingController#create as JSON
  Parameters: {}
Completed 200 OK in 59542ms (Views: 1.8ms | ActiveRecord: 59265.2ms)
4

1 に答える 1

0

1.)paramsアプリが 59 秒のデータベース クエリを生成する前に送信されたハッシュを確認します。それを他のパラメーターと比較して、問題を引き起こす可能性のある違いを探します。

2.)サーバーによって処理されるすべてのクエリをログに記録mysqldする--log=/path/to/log.logオプションを使用して開始し、非常に長い時間がかかるクエリを確認します。

3.) すべての外部キーにインデックスがあるかどうかを確認します。デフォルトでは、Rails は外部キー列にインデックスを追加しません。これは、一部の Rails 開発者が無視する一般的な問題です。インデックスのない外部キーがある場合は、移行によってそれらにインデックスを追加します。

于 2012-07-16T23:20:20.453 に答える