Хостинг Heroku использует в 5 раз больше оперативной памяти, чем Google Cloud Run

В моем приложении Django есть много списков, наборов и словарей, которые я загружаю из pickle-файлов в оперативную память для быстрого доступа в любой момент. На Heroku я получаю ошибку R14 (превышена квота памяти). Я много занимался отладкой и анализом использования памяти в Python. Я знаю, как оптимизировать код, и я оптимизировал все, что можно оптимизировать.

Теперь вот что странно: одно и то же приложение, буквально одно и то же развертывание, на облаке Google занимает в 5 раз меньше RAM памяти, чем на Heroku. Я развертываю оба приложения из одного и того же Git-репозитория. На google достаточно 1 ГБ RAM, допустим, там требуется около 900 МБ RAM, а на Heroku то же самое занимает 4,5 ГБ RAM, для чего мне нужно "арендовать" 8 ГБ RAM, что делает затраты безумно высокими.

Почему это происходит?

Значит, дело не в оптимизации моего собственного кода. Как может одно и то же приложение на Heroku занимать в 5 раз больше оперативной памяти, чем на Google?

Как я получил это измерение в 5 раз, на самом деле, у меня есть сайт электронной коммерции, с товарами, и у них есть атрибуты и значения, а также ключевые слова. Я храню все эти значения и ключевые слова в оперативной памяти для быстрого поиска в поисковой системе. Если я разверну на Heroku те же продукты, что и на Google Cloud run, это приведет к переполнению оперативной памяти. Поэтому, чтобы попытаться уложиться в бесплатный уровень Heroku размером 1 ГБ, я протестировал и пришел к выводу, что развертывание только 20% продуктов помещается в память, все, что больше этого, аварийно завершается, в то время как Google Cloud без проблем обрабатывает 100% всех этих продуктов в оперативной памяти. Бесплатный уровень Heroku на самом деле 512 МБ, но на самом деле они разрешают до 1 ГБ.

Вернуться на верх