Случайно длинные запросы к БД / Memcache выбирает в рабочей среде - PullRequest
0 голосов
/ 13 мая 2009

У меня проблемы с диагностикой проблемы в производственной среде ubuntu scalr / ec2.

Проблема, по-видимому, в случайном порядке, запросы к базе данных и / или запросы memcache займут НАМНОГО дольше, чем должны. Я видел, как простое выражение select занимало 130 мс, а извлечение Memcache - 65 мс! Это может происходить несколько раз за запрос, в результате чего некоторые запросы занимают в два раза больше времени, чем должны.

Чтобы диагностировать проблему, я написал очень простой скрипт, который просто подключится к серверу 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 как источник проблемы. Я также написал то же самое в Python, чтобы устранить Ruby. И действительно, Python тоже занимал слишком много времени!

И MySql, и Memcache находятся в своих собственных блоках, поэтому я рассмотрел задержку в сети, но просмотр ping s и traceroute выглядит нормально.

Кроме того, выполнение запросов / выборок на соответствующих машинах возвращает ожидаемое время, и я запускаю те же гемы версии на моей промежуточной машине без этой проблемы.

Я действительно в этом тупик ... есть мысли о том, что я мог бы попытаться диагностировать? Спасибо

Ответы [ 2 ]

0 голосов
/ 15 декабря 2010

Mysql использует кеш запросов для хранения SELECT вместе с его результатом. Это может объяснить постоянную скорость, которую вы получаете при непрерывном выборе. Попробуйте EXPLAIN-inig запрос, чтобы увидеть, используете ли вы индексы.

Я не понимаю, почему memcache может быть проблемой (разве что он выходит из строя и перезапускается?). Проверьте журналы сервера на наличие подозрительных сбоев службы.

0 голосов
/ 14 мая 2009

Я думал только, что это может быть диск?

...