Сервер тормозит при удалении перемещении файлов.

12
Logan_30
На сайте с 05.07.2015
Offline
61
1209

Ситуация следующая есть сервер Intel Xeon E3-1270v5 3.6GHz 8 ядер, 64GB RAM ECC REG, 3 TB HDD файловая система ext4, CentOs7

При удалении или перемещении файлов в php цикле с помощью rename, unlink, exec(mv и cp)

после удаления примерно 10000-20000 изображений сервер начинает существенно тормозить вплоть до того, что даже html страницы не открываются, есть подозрения на тормоза из-за того, что в папке более 2 000 000 изображений, знаю, что такое количество изображений хранить в 1 папке глупо, но на другом сервере слабее в 4 раза на CentOs 6.4 все отлично работало.

Подскажите куда копать?

adel92
На сайте с 04.01.2012
Offline
334
#1

Диск один, без RAID? Тогда дело конечно в кол-ве файлов, особенно если эти файлы мелкие, а это еще может быть и SATA2. Это называется иноды.

Покажите вывод команды:

df -i

Вполне вероятно, что дело именно в кол-ве файлов в папке. До этого диск мог быть подключен по другому интерфейсу, либо RAID контроллер, либо SSD, либо диск тогда был серверный, а сейчас десктопный.

Нужно делать анализ, не всегда нужен такой конфиг как у Вас с одним HDD на 3 Тб, а скорее всего он Вам и не нужен, так как производительности дисковой у Вас нет никакой и остальные параметры Вы не используете.

NVMe VDS (https://well-web.net/nvme-vps) с поддержкой 24/7 - от 545 руб.! Безлимитный хостинг (https://well-web.net/ssd-hosting) - от 129 руб.! Домен в подарок! Перенос бесплатно! Заказывайте сейчас, и получите скидку 50%! Заходи! (https://well-web.net/limited-offers)
Logan_30
На сайте с 05.07.2015
Offline
61
#2
adel92:
Диск один, без RAID? Тогда дело конечно в кол-ве файлов, особенно если эти файлы мелкие, а это еще может быть и SATA2. Это называется иноды.

Покажите вывод команды:

Вполне вероятно, что дело именно в кол-ве файлов в папке. До этого диск мог быть подключен по другому интерфейсу, либо RAID контроллер, либо SSD, либо диск тогда был серверный, а сейчас десктопный.
Нужно делать анализ, не всегда нужен такой конфиг как у Вас с одним HDD на 3 Тб, а скорее всего он Вам и не нужен, так как производительности дисковой у Вас нет никакой и остальные параметры Вы не используете.

2xHDD Toshiba 3TB 7200rpm 64MB зеркало (Raid 1)

/dev/md2 292567424 6745743 285821681 3% /

devtmpfs 8201090 441 8200649 1% /dev

tmpfs 8203713 1 8203712 1% /dev/shm

tmpfs 8203713 667 8203046 1% /run

tmpfs 8203713 16 8203697 1% /sys/fs/cgroup

/dev/md0 65536 345 65191 1% /boot

tmpfs 8203713 1 8203712 1% /run/user/0

Оптимизайка
На сайте с 11.03.2012
Offline
396
#3
Logan_30:
При удалении или перемещении файлов

Если цель именно удалить файлы то

find /путь/к/каталогу -type f -delete

или

mkdir empty_dir

rsync -a --delete empty_dir/ /путь/к/каталогу/
⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
edogs software
На сайте с 15.12.2005
Offline
775
#4
Оптимизайка:
Если цель именно удалить файлы то

find /путь/к/каталогу -type f -delete

При 2млн файлах это так себе идея.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
Logan_30
На сайте с 05.07.2015
Offline
61
#5
Оптимизайка:
Если цель именно удалить файлы то

find /путь/к/каталогу -type f -delete


или

mkdir empty_dir

rsync -a --delete empty_dir/ /путь/к/каталогу/

Все равно тормозит.

Еще заметил, что переполнен буфер - это нормально?

KiB Mem : 65629708 total, 2374112 free, 4583508 used, 58672088 buff/cache

Оптимизайка
На сайте с 11.03.2012
Offline
396
#6
edogs:
При 2млн файлах это так себе идея.

Это гораздо быстрее чем rm -rf. А что, есть ещё идеи?

Logan_30
На сайте с 05.07.2015
Offline
61
#7

Вообщем интересная штука получается полностью зависает apache даже при копировании других файлов с панели isp manager. Очень странно. Тут уже дело даже не в количестве файлов.

Оптимизайка
На сайте с 11.03.2012
Offline
396
#8
Logan_30:
Все равно тормозит

Рейд то ваш в порядке вообще? cat /proc/mdstat

Нагрузка на диск есть? iotop и top -n 1

edogs software
На сайте с 15.12.2005
Offline
775
#9
Оптимизайка:
Это гораздо быстрее чем rm -rf. А что, есть ещё идеи?

Интернет полон идеями!

https://habrahabr.ru/post/157613/

Удаление через find -delete

$ find /mnt/test_dir/ -type f -delete
Вырос до 600Мб, прибил по ^C. Ничего не удалил.
Аналогично предыдущей команде. И это крайне удивительно! На эту команду я возлагал надежду изначально.
На практике лучше использовать rm -r /my/dir/, т.к. он поступает более умно — сперва строит относительно небольшой список файлов в памяти, вызывая несколько раз readdir(), а затем удаляет файлы по этому списку. Это позволяет более плавно чередовать нагрузку на чтение и запись, чем повышает скорость удаления.

p.s.: сами используем php скрипт через readdir, остальные способы оказались как-то слишком индивидуальны и зависящими от ФС, ОС и еще непонятно чего.

Оптимизайка
На сайте с 11.03.2012
Offline
396
#10
edogs:
$ find /mnt/test_dir/ -type f -delete
Вырос до 600Мб, прибил по ^C. Ничего не удалил.
На практике лучше использовать rm -r /my/dir/

Странно, но мой опыт совершенно противоположный. Проверять еще раз не хочу :D

12

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