Я новичок в использовании серверов, но недавно я столкнулся с узким местом, и мне пришлось выполнять вычисления в облаке. После 2 недель использования сервера, похоже, возникли проблемы с памятью.
Использую сервер для ноутбуков Jupyter и хранения больших файлов. Я загружаю большие файлы в свои записные книжки Jupyter, и мои файлы загружаются без проблем в течение первых 2 недель. Однако сегодня я столкнулся с проблемой памяти после проблемы с памятью. И это так плохо, что даже после того, как я отключил все активные записные книжки и запустил свои первые несколько записных книжек, ни один из них даже не работал из-за проблем с памятью.
Используя команду TOP, он говорит, что у меня доступно около 90% доступной памяти. Однако он не позволит мне запустить код, который я выполнял последние 2 недели, без проблем.
Поэтому мне интересно, следует ли мне регулярно перезапускать сервер или что-то еще, чтобы решить эту проблему. Или что-то другое.
Спасибо!
Если вы загружаете файл в записную книжку Jupyter и сохраняете его содержимое в переменной, базовый процесс Python будет выделять память для этих данных, пока существует переменная и работает записная книжка. Сборщик мусора Python освободит память снова (в большинстве случаев), если обнаружит, что данные больше не нужны. Это тот случай, если он удален, например используя дель, если переменная перезаписана чем-то другим или выходит за пределы области видимости (локальная переменная в конце функции).
Если вы храните большие файлы в (разных) переменных в течение нескольких недель, данные останутся в памяти и в конечном итоге заполнят ее. В этом случае вам, возможно, придется выключить записную книжку вручную или использовать какой-либо другой метод для удаления (глобальных) переменных.
Совершенно другой причиной такой же проблемы может быть ошибка в Jupyter. Ошибки такого типа называются утечкой памяти и часто возникают в серверных процессах, выполняющихся долгое время. Даже если они с меньшей вероятностью произойдут в Python, есть некоторые ошибка отчеты для Jupyter. В этом случае единственным решением может быть перезапуск процесса Jupyter. В других случаях я бы рекомендовал это сделать.