У меня есть приложение Ruby on Rails, которое загружает тысячи маркеров карты и отображает их на карте с помощью API Карт Google.Все маркеры необходимы в представлении, поэтому они должны быть загружены контроллером и отображены.
Соответственно, я выделяю большие объемы памяти каждый раз, когда пользователь загружает свою карту, и, таким образом, довольно часто сталкиваюсь с ошибками «R14 - Memory Quota Exced In Ruby (MRI)» в Heroku, когда я перехожу за 500 МБограничение памяти.
Я оптимизировал свой код с помощью менее интенсивных запросов, таких как:
@user.markers.select(:coordinates)
вместо:
@user.markers
Пока я недо сих пор создается много памяти из-за необработанного количества загружаемых объектов (иногда свыше 2000-3000 на карте на пользователя). Когда несколько пользователей делают похожие запросы, я быстро наращиваю более 500 МБ памяти.
Означает ли это, что мне просто нужно выделить больше памяти для моего экземпляра Heroku, или есть какие-то другие способы сокращения использования памяти в такой ситуации?