Лучший способ удалить старый журнал без блокировки процессора
У меня есть 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