Лучший способ удалить старый журнал без блокировки процессора

У меня есть 3 машины AWS EC2, использующие каждый 500 ГБ хранилища EBS. На них у меня есть поисковая система SolrCloud, работающая на Jetty и обслуживающая множество запросов. Со временем журналы причала сильно выросли, размером до ~200G. Я хотел бы удалить это, но не отказываясь от доступности моей системы solr. Если я сделаю rm -rf logfile затем ожидание ЦП увеличивается до 99%, и узлы на этих машинах больше не отвечают, пока нагрузка не уменьшится.

Есть ли способ удалить эти файлы журнала без этого огромного увеличения нагрузки? Спасибо

Позже редактирование: Итак, я нашел в Интернете 4 способа очистки больших файлов, но нет никакого сравнения между ними, поэтому я не уверен, что удовлетворит мою проблему. Плюсы и минусы для каждого из них?

1.> largefile.txt
2. truncate -s 0 {filename.txt}
3. logrotate
4. cat /dev/null > largefile.txt

2 ответа

Вы можете попробовать ограничить количество процессоров, которые может использовать процесс rm. Это займет больше времени, но не затопит вашу систему. Вот статья, рассказывающая об этом с помощью программы cpulimit.

Проблема может быть даже не в процессоре, а в IOLOAD.

У меня была проблема с несколькими> 20 ГБ размером Logfiles некоторое время назад.

в основном то, что я сделал, чтобы уменьшить влияние удаления:

nice -n19 ionice -c3 rm LOGFILE

Однако ionice может работать некорректно с настройками вашего оборудования и / или планировщика ввода-вывода.

По словам Стю Томпсона, для рабочей команды ionice вам может понадобиться планировщик CFG.

Возможно, ionice не работает для вас, потому что вы работаете с неверным планировщиком. По-видимому, он работает только с планировщиком CFQ. - Стю Томпсон 31 октября '11 в 12:28

Смотрите это для проблемы планировщика ionice CFG

Другие вопросы по тегам