#ruby-on-rails #sqlite #activerecord
#ruby-on-rails #sqlite #activerecord
Вопрос:
У меня есть приложение Rails 3 с примерно 11 000 строками подкастов и примерно 600 000 строками эпизодов в базе данных SQLite. В настоящее время он находится в разработке, и я единственный клиент, обращающийся к серверу.
Когда я прихожу домой с работы в конце дня и делаю первый запрос на просмотр эпизодов подкаста, запрос занимает примерно в 10 раз больше времени, чем обычно. Однако второй запрос занимает обычное количество времени.
Меня не сильно беспокоит эта конкретная проблема, но я почти уверен, что она является следствием других проблем, которые могут возникнуть при конечном развертывании этого приложения.
Должен ли я переключиться на MySQL или базу данных nosql? Могу ли я что-нибудь еще сделать?
РЕДАКТИРОВАТЬ: Я должен добавить, что я использую Mac OS X web sharing с Passenger в качестве своего сервера.
Спасибо,
Харрис
Ответ №1:
Если вы используете Passenger или какую-либо программу запуска приложений, вы можете обнаружить, что процесс Rails отключается при длительном простаивании. Все приложение должно быть перезапущено по первому запросу, но после этого оно будет работать нормально.
Это типично для сайтов, которые не получают большого трафика. Вы можете искусственно стимулировать немного трафика, используя cron
задание и curl
, конечно.
Обычно вы можете определить, так ли это, просмотрев список ваших процессов и посмотрев, все еще выполняется ли Rails
процесс.
Это повлияет даже на приложения без базы данных.
Комментарии:
1. Спасибо за полезный ответ. Не могли бы вы просто объяснить, что вы подразумеваете под «отключенным»?
2. Простаивающие процессы завершаются, если пассажир считает, что они больше не требуются. Я считаю, что это происходит быстрее, если доступно меньше системной памяти, потому что это высвободило бы ресурсы, которые могли бы быть полезны для других процессов.