Я недавно развернул веб-приложение на Heroku (бесплатная версия).Развертывание использует Python с библиотеками для plotly, dash, pandas и bootstrap.Я хотел бы предположить, что эта установка, основанная на размере всех файлов, должна быть только в нескольких десятках мегабайт.Тем не менее, он потребляет более 400 МБ ОЗУ.Как устранить неполадки, чтобы определить причину такой высокой памяти (возможно, утечку памяти)?
Я пытался использовать инструмент heroku labs logs-runtime-metrics, но информация ограничена.Я также пытался использовать инструменты разработчика Chrome, но не смог никуда добраться.
heroku labs:enable log-runtime-metrics
heroku logs
Журнал выглядит примерно так:
heroku[web.1]: source=web.1 dyno=heroku.XXXX sample#memory_total=458.20MB sample#memory_rss=431.30MB sample#memory_cache=26.89MB sample#memory_swap=0.00MB sample#memory_pgpgin=160223pages sample#memory_pgpgout=49568pages sample#memory_quota=512.00MB
Как я упоминал выше, значение memory_rssчто в переводе на фактическое потребление ОЗУ слишком велико для функции на основе Python (близко к пределу).Запуск того же процесса на моей локальной машине достигает пика в 180 МБ.Влияет ли импорт модулей Python на производительность памяти слишком сильно?
Нужны советы или помощь, чтобы указать мне правильное направление, пожалуйста.Ценю твою помощь.Спасибо.
РЕДАКТИРОВАТЬ 1: gunicorn --preload и улучшенная база кодов
Я попытался несколько улучшить оптимизацию памяти, используя этот хак, где можно предварительно загрузитьприложение, как описано здесь: Gunicorn Preload
Это делается путем редактирования Procfile, чтобы он содержал следующее:
web: gunicorn hello:app --preload
Я также внес некоторые изменения в том, как яимпортировал определенные библиотеки и избегал других, чье назначение могло быть переопределено.Несмотря на все это, мои новые журналы показывают приличное улучшение:
heroku[web.1]: source=web.1 dyno=heroku.XXXX sample#memory_total=272.63MB sample#memory_rss=248.45MB sample#memory_cache=24.18MB sample#memory_swap=0.00MB sample#memory_pgpgin=97938pages sample#memory_pgpgout=28145pages sample#memory_quota=512.00MB
Дополнительные входные данные приветствуются!