Я управляю небольшой социальной сетью, и последние несколько дней у нее периодически возникают задержки сервера. Сайт заблокирует загрузку страницы, и через несколько мгновений та же страница загрузится без проблем.
Как лучше всего определять задержку сервера и как ее устранить?
Моя коробка ..
Запуск на MongrelDB с mySQL через Ruby on Rails
Все динамические изображения и база данных размещаются через S3
High CPU Med (32 bit)
5 ECU, 1.7GB RAM
350GB Non-persistent storage
Трафик составляет примерно 60 просмотров страниц в день.
Вы следите за нагрузкой на сервер?
Есть инструменты производительности для RoR, которые могут измерить производительность вашего сервера при запуске сценариев RoR, но я не могу вспомнить название насквозь. Однако найти его не составит большого труда. Тот, о котором я думаю, обсуждался в подкасте Ruby on Rails.
Вы проверяете журналы на наличие ошибок?
Вы говорите о задержке сервера, но это может быть вовсе не задержка. Это вполне могло быть проблемой производительности на сервере. Не хватает памяти из-за ошибки? Процессы прекращаются после ошибочного запуска?
Можете ли вы следить за сервером, чтобы узнать, что говорит топ, что происходит во время одного из этих лагов?
Похоже, что что-то нужно передать или переместить в рабочую память, а затем кэшировать, чтобы оно работало быстро при повторном запросе, если только что-то не проксируется или не зависает где-то. Если у самого сервера нет никаких проблем, вам нужно будет диагностировать, есть ли у вас или у всех случайное отставание.
Существуют тестовые инструменты для измерения производительности. Возможно, вам стоит заглянуть в одну из этих служб, чтобы протестировать свой сервер и профилировать код RoR / базы данных.
Вы также можете подумать об установке какого-либо программного обеспечения для мониторинга серверов, такого как Nagios, чтобы предупреждать вас, когда / если ресурс заканчивается, или если есть условие предупреждения, которое нужно проверить.