У меня есть приложение Rails 3.2.12, локально установленное на DotCloud. Я вижу очень медленно ActiveRecord (Postgres) производительность на Dotcloud и не может понять, почему:ActiveRecord Postgres 8-10x медленнее на производстве DotCloud (EC2) против разработки Macbook Air
Page Load Macbook Air (рельсы приложение в режиме разработки):
Completed 200 OK in 617ms (Views: 361.3ms | ActiveRecord: 39.1ms)
загрузки страницы DotCloud (рельсы приложения в режиме производства, идентичных DB и странице):
Completed 200 OK in 796ms (Views: 315.3ms | ActiveRecord: 329.4ms)
Это не беспорядочное время, но стандарт производительность дельта на всех загрузках страницы. Моя база данных составляет всего 16 МБ, поэтому она невелика. Объем памяти в службе postgres достаточен (128 МБ), при этом используется только 30 МБ. Я проверил свой локальный postgres.conf, и настройки были по умолчанию, отключены параметры postgresql.app.
Является ли это плохая производительность тем, чего можно ожидать в облаке? Является ли это сетевой латентностью между веб-сервером и сервером db?
Был бы очень благодарен за мысли о том, как отлаживать & исправить это!
Что такое аппаратное обеспечение в облаке? У Air нет супер быстрых SSD? – AdamT
Dotcloud находится на EC2, так что это то, на чем они были. Но с базой данных 16 МБ postgres должны использовать память и кэшировать все это, не полагаясь на диск ... Любой способ настроить это? – n8vision
Первое, что вам нужно сделать, это включить ведение журнала запросов в PostgreSQL на обеих машинах, а затем сравнить длительность запросов. Посмотрите, является ли это проблемой уровня БД или что-то более высокое. Также: Каково общее состояние памяти машины? Загрузка дискового ввода-вывода? –