0

ubuntu scalr/ec2 本番環境で発生している問題を診断するのに苦労しています。

問題は明らかにランダムで、データベース クエリや memcache クエリに必要以上に長い時間がかかります。単純な select ステートメントで 130 ミリ秒、Memcache フェッチで 65 ミリ秒かかることがわかりました。リクエストごとに数回発生する可能性があり、一部のリクエストは本来の 2 倍の時間がかかります。

問題を診断するために、MySql サーバーに接続してクエリを実行するだけの非常に単純なスクリプトを作成しました。

require 'mysql'

mysql = Mysql.init
mysql.real_connect('', '', '', '')

max = 0
100.times do
  start = Time.now
  mysql.query('select * from navigables limit 1')
  stop = Time.now

  total = stop - start
  max = total  if total > max
end

puts "Max Time: #{max * 1000}"

mysql.close

このスクリプトは一貫して非常に高い最大時間を返したので、問題の原因である Rails を排除しました。Ruby をなくすために、Python でも同じことを書きました。実際、Python の場合も非常に時間がかかりました。

MySql も Memcache もそれぞれ別のボックスにあるので、ネットワーク レイテンシーを考慮しましたが、pings とtracerouteing の監視は正常に見えます。

また、それぞれのマシンでクエリ/フェッチを実行すると、予想される時間が返されます。ステージング マシンで同じバージョンの gem を実行しても、この問題は発生しません。

私は本当にこれに困惑しています...これを診断しようとすることができる何かについての考えはありますか? ありがとう

4

2 に答える 2

0

私の唯一の考えはそれがディスクかもしれないということですか?

于 2009-05-14T03:52:13.803 に答える
0

Mysql はクエリ キャッシュを使用して、SELECT をその結果と共に格納します。これは、連続選択で得られる一定の速度を説明できます。クエリを EXPLAIN-inig して、インデックスを使用しているかどうかを確認してください。

memcache が問題になる理由がわかりません (クラッシュして再起動しない限り?)。疑わしいサービス障害がないか、サーバー ログを確認してください。

于 2010-12-15T18:14:14.603 に答える