Удаление большого числа файлов.

12
magazzz
На сайте с 26.05.2012
Offline
52
1466

Здравствуйте уважаемые.

Такая проблема, есть сайт, на котором делается очень много запросов.

В целях снижения нагрузки сделали логирование в папку.

Теперь проблема удаления и чистки (дебиан)

Поставили крон

find /var/www/pols/data/www/data/logs -cmin +2880 -type f -delete

Т.е. удаляются файлы старше двух дней.

Но когда этот крон запускается, он вешает сайты и они потом не грузятся какое то время.

Потом крон отрабатывает и они начинают работать.

Есть ли решение, как можно без большой нагрузки выполнять удаление большого числа мелких файлов.

Количество очень большое.

Гоняю по твиту ваши ссылки. Продам раскрученные акки твита. В личку.
L
На сайте с 29.10.2006
Offline
110
#1

А если сделать из одного очень большого количества несколько количеств поменьше?

В любом случае с большим количеством операций IO с мелкими файлами будет страдать дисковая подсистема. От этого не уйти.

Можно и тюнингом заморачиваться, но если в остальном все работает как нужно - можно просто разбить процесс удаления на несколько этапов или непрерывно подчищать.

SeBlock (/ru/forum/851994) - программа для ведения проектов по НЧ/СЧ. Буду рад отзывам/комментариям.
A
На сайте с 19.07.2010
Offline
130
#2

как вариант: подумать над сохранением файлов во много папок, по 1-2 тыс файлов в одну папку. это значительно ускорит файловые операции.

.............
magazzz
На сайте с 26.05.2012
Offline
52
#3

Они разбиты на 123456789abcdef папки

Кешируемые запросы.

---------- Добавлено 27.05.2014 в 15:13 ----------

Т.е. сделать как то, что бы каждая папка еще делилась на подпапки

---------- Добавлено 27.05.2014 в 15:14 ----------

И это снизит нагрузку?

---------- Добавлено 27.05.2014 в 15:19 ----------

И еще проблема, я счас сделал копию той большой папки, т.е. переименовал ее.

А новую создал с новыми условиями. пока что чистить каждые 6 часов и время кеша 1 день.

А вот как удалить всю старую папку? Без увеличения нагрузки на жесткие диски?

Нельзя ли как то паузу что ли прикрутить к этому процессу. Что то типа задержки перед каждым новым удалением. Это же должно снизить нагрузку?

L
На сайте с 29.10.2006
Offline
110
#4
magazzz:

Нельзя ли как то паузу что ли прикрутить к этому процессу. Что то типа задержки перед каждым новым удалением. Это же должно снизить нагрузку?

Сделайте небольшой скриптик - получите все имена файлов под удаление. Далее разбейте их на ряд групп и постепенно удаляйте эти группы, ставя паузы между удалением.

magazzz
На сайте с 26.05.2012
Offline
52
#5

Буду пробовать

A
На сайте с 19.07.2010
Offline
130
#6
magazzz:
Они разбиты на 123456789abcdef папки
Кешируемые запросы.
Т.е. сделать как то, что бы каждая папка еще делилась на подпапки
И это снизит нагрузку?

да

например в nginx делают такую структуру папок.

по этому же принципу делал на пхп: имя временного файла - md5() от нужных параметров (урла и/или ключей), структура папок - последние символы от md5.

структура такая:

cache/2/45/1111111234 (имя файла - условное, в md5 цифр/букв больше)

или

cache/23/45/1111112345

cache/23/456/1111123456

и т.д. подберите оптимальный вариант для себя. думаю три уровня вам не понадобится...

cache/23/45/67/111111234567

J
На сайте с 20.02.2014
Offline
120
jkm
#7

По идее если применить renice и ionice серверу должно полегчать.

magazzz
На сайте с 26.05.2012
Offline
52
#8

Я вот применил ionice

Вроде полегче, но все же сервак еле еле тянет сайты.

Грузятся очень медленно

J
На сайте с 20.02.2014
Offline
120
jkm
#9
magazzz:
Здравствуйте уважаемые.
find /var/www/pols/data/www/data/logs -cmin +2880 -type f -delete

если -delete заменить на -exec rm {} \;

и применить ionice -c3

/ru/forum/comment/7464255;postcount=7

L1
На сайте с 21.09.2007
Offline
115
#10

Как часто запускаете крон на удаление ?

Может его стоит чаще запускать и в итоге меньше файлов будет собираться?

Просто если вы удаляете файлы старше 2х часов, а крон запускаете только раз в сутки - то это как минимум не оптимизировано.

Если файлов миллионы, лично у меня 3х папочная структура.. a/b/c/abcdef....txt (первые 3 буквы имени файла).

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий