Рекомендации по открытию / обработке файла журнала ошибок 580 ГБ - PullRequest
1 голос
/ 13 декабря 2011

Друг попросил меня помочь ему с простым PHP-скриптом, который я разместил на их Wordpress-сайте. При этом я столкнулся с несколькими вопиющими проблемами, которые, как мне казалось, могли бы помочь ему. Потом я наткнулся на зверя.

Файл журнала ошибок 580 гигабайт.

Это простой блог с миллионами просмотров в месяц и гигабайтами картинок, но разве ему не нужно что-то обслуживать? Я знаю, что в большинстве случаев могу tail -f файл журнала, но я думаю, что это может привести к столкновению планет при попытке открыть текстовый файл такого размера.

Вопрос

Должен ли я сказать ему просто стереть его и начать отсматривать его заново, или есть ли правильный способ просмотреть, например, журналы за последние 10 дней? Я не провел достаточно времени на их сервере (только просмотр FTP), чтобы посмотреть, что они запускают.

Ответы [ 3 ]

1 голос
/ 13 декабря 2011

Я подозреваю, что это происходит во всем мире в миллиардах приложений, как мы говорим. Файлы журналов хранят данные на жестких дисках, иногда годами, а иногда забываются.

Хотя некоторые приложения предоставляют механизмов для помощи в сборе данных и сжатии файлов журналов, вам все равно придется в конечном итоге «думать», что где бы вы ни хранили данные, они имеют тенденцию накапливаться с годами, если данные распространяются на несколько источников, биты часто забываются. Это странный вопрос для публикации о переполнении стека, но надеюсь, что ответ поможет.

1 голос
/ 13 декабря 2011

Это дает вам последние 100 строк:

tail -n 100 logfile > last-100-lines.log

В терминах «дата» вы также можете:

cat |grep '2012-12' > all-dec.log

Нет, точный термин для grep зависит от того, как выглядит файл журнала. Обе операции потребуют немного времени для запуска. Если это приложение интенсивно использует диск, вы можете столкнуться с проблемами, насыщая диск, так как этот монстр довольно большой, и очень маловероятно, что у вас 600 ГБ ОЗУ и этот файл журнала кэшируется в памяти. ; -)

В любом случае, для ударов попробуйте bzip2 --best logfile, затем загрузите его и оцените на localhost.

Нелегко работать с файлами такого большого размера, но это должно быть выполнимо.

0 голосов
/ 13 декабря 2011

Вы могли бы написать программу, которая открывает файл, ищет смещение, скажем, на один гигабайт меньше, чем размер файла, и копирует все с этого момента в другой файл. Таким образом, вы можете извлечь самые последние журналы без огромного количества дискового ввода-вывода, читая от 1001 * до всех старых вещей. Если вы хотите выполнить фильтрацию по дате, сделайте это с новым меньшим файлом, а не с оригинальным огромным.

Также было бы неплохо взглянуть на некоторые другие части файла, чтобы понять, почему такой большой. Например, есть ли определенное сообщение, которое повторяется много-много раз? Я бы сделал некоторую статистическую выборку: выбрал несколько случайных мест в файле и прочитал примерно килобайт или около того. Опять же, ищите место, откуда вы собираетесь читать, а не читайте все, начиная с самого начала.

...