Проблема
Недавно я столкнулся с проблемой, связанной с памятью, когда сценарий python пытается выполнить, но выдает следующую ошибку:
Traceback (most recent call last) :
File "FiveMinutes.py", line 56, in <module>
main()
File "FiveMinutes.py", line 41, in main
f.write('hello')
OSError: [Errno 28] No Space left on device
Однако для меня это было всего лишь признаком того, что дисковое пространство достигло максимума. Я проверил это с помощью df
, например:
/dev/sda1 46377792 44369504 0 100% /
Это показывает, что диск заполнен. Поэтому я выделил виртуальной машине (GCP Compute Engine) на 15 ГБ больше диска. Вскоре все это было израсходовано ОС, и диск снова был исчерпан.
Что я пробовал
Проведя расследование, я обнаружил, что все данные начали храниться внутри система .cache/pip/http
. Что показало:
root@serval-1:~/.cache/pip/http# du --max-depth=1 -h
42M ./3
25M ./c
13M ./8
22M ./4
15M ./a
1.4M ./e
20M ./6
2.4M ./9
6.6M ./d
57M ./1
3.2M ./7
676K ./5
16M ./b
2.9M ./2
1.2M ./f
660K ./0
226M .
(Модуль http
довольно часто используется в моей кодовой базе, поэтому показ всех его применений в этом вопросе не был бы таким полезным, хотя при необходимости с радостью предоставлю) .
В качестве временной меры я удалил этот .cache
и перезапустил виртуальную машину. Это сработало и уменьшило общий объем хранилища на 50% . Примерно так:
/dev/sda1 46377792 21769340 22600164 50% /
Но не дает объяснения поведения или предотвращения возникновения.
Любая информация о том, что такое pip\http
и почему он ведет себя, была бы действительно полезной на постоянную меру.