piped logging from Nginx to MySQL

Igor Sysoev igor на sysoev.ru
Ср Дек 16 13:09:12 MSK 2009


On Wed, Dec 16, 2009 at 12:38:49PM +0300, Ihalainen Nickolay wrote:

> или пайпы работают медленней чем файлы?

Разумеется. При записи в пайп первая программа копирует данные в ядро.
После этого просыпается вторая программа, которая копирует эти данные
из ядра к себе и что-то с ними делает (пишет на диск, анализирует или
вставляет в базу, что вообще нетривиальная операция). Потом это программа
опять пытается прочитать из пайпа и блокируется. Первая программа
продолжает работу. Во время всех этих операций ради 100-200 байт лога
происходит несколько переключений контекстов исполнения с вымыванием
кэшей (случай с базой я даже не рассматриваю). Поэтому-то в качестве
альтернативы предлагается вариант

    tail -F access.log | program

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


-- 
Игорь Сысоев
http://sysoev.ru



Подробная информация о списке рассылки nginx-ru