У меня проблемы с диагностикой проблемы в производственной среде 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
выглядит нормально.
Кроме того, выполнение запросов / выборок на соответствующих машинах возвращает ожидаемое время, и я запускаю те же гемы версии на моей промежуточной машине без этой проблемы.
Я действительно в этом тупик ... есть мысли о том, что я мог бы попытаться диагностировать?
Спасибо