LINUX.ORG.RU

tail и мультипроцессы


0

1

Есть лог-файл. Хочется его парсить в реальном времени. Скрипты вида «tail -f ./filename | grep parser.py » ( ну или другие подобные варианты ) работает, но при большой нагрузке все это начинает отставать ( видимо из-за того что это работает в один поток синхронно ). Есть ли вариант чтобы можно было для tail одновременно запускать несколько потоков ( т е чтобы парсились строки не последовательно, а несколько сразу ) ?

★★☆☆

Наверное, лучше тебе встроиться между программой, генерирующей логи и файлом. tail вносит дополнительную нагрузку.

i-rinat ★★★★★
()
tail -f ./filename | grep --line-buffered parser.py

Это?

sin_a ★★★★★
()

Открой в парсере файл напрямую и мониторь дескриптор epoll'ом. Таким образом скорей всего даже в один поток успеешь, если грамотно все коллбеки расставить.

provaton ★★★★★
()
Ответ на: комментарий от provaton

Открой в парсере файл напрямую и мониторь дескриптор epoll'ом.

Таки файл и сразу таки epoll'ом? Это работать не будет, poll семантики для обычных файлов нет. В лучшем случае поможет inotify.

mashina ★★★★★
()

при большой нагрузке все это начинает отставать

на сколько? И какое время отставания считается допустимым.

mashina ★★★★★
()

Скрипты вида «tail -f ./filename | grep parser.py » ( ну или другие подобные варианты ) работает, но при большой нагрузке все это начинает отставать ( видимо из-за того что это работает в один поток синхронно ).

как раз наоборот. У тебя тормозит потому, что два потока работают СРАЗУ, синхронно.

Есть ли вариант чтобы можно было для tail одновременно запускать несколько потоков

да. Конвейер.

emulek
()

видимо из-за того что это работает в один поток синхронно

Скорее всего Вам поможет параметр -s 0.1 к tail. А если он не поможет, то Вам уже ничто не поможет. Кроме ionice для tail разве что.

Sorcerer ★★★★★
()
Ответ на: комментарий от Sorcerer

Вам уже ничто не поможет. Кроме ionice для tail разве что.

тормозит у него скорее всего не tail, а обработчик.

mashina ★★★★★
()
Ответ на: комментарий от mashina

тормозит у него скорее всего не tail, а обработчик

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

Sorcerer ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.