header вместо error_page

Igor Sysoev is at rambler-co.ru
Thu Dec 6 17:23:10 MSK 2007


On Thu, Dec 06, 2007 at 05:03:34PM +0300, Евгений Васильев wrote:

> Здравствуйте, Igor.
> 
> Вы писали 6 декабря 2007 г., 16:17:45:
> 
> IS> On Thu, Dec 06, 2007 at 03:27:00PM +0300, Евгений Васильев wrote:
> 
> >> >> Замечательно! вот бы еще сделать так, чтобы строки лога имели
> >> >> фиксированную длину, для быстрого его чтения.
> >> >> т.е уровнять параметры $user_agent $refferer $request
> >> >> =)
> >> 
> >> IS> Это очень просто. Для этого нужно, чтобы клиенты пользовались только одной
> >> IS> версией браузера, делали бы одинаковый запрос, и делали бы его с одного
> >> IS> и того же сайта.
> >> 
> >> :)
> >> 
> >> А всеже, неплохо было бы иметь переменные или просто параметр bin_log
> >> Ну или какойнить патчик чтобы это делал, добивал строки пробелами или
> >> нулями до указанной длины например.
> >> цифры в байтах, строки пробелами добивать, размеры сократятся лога
> >> значительно, и читать проще, не загружая весь лог.
> 
> IS> С чего это они сократяться, если все запросы, User-Agent'ы и Referer'ы
> IS> будут добивать до одинаковой длины ? Какой, кстати - 1K, 2K, 16K?
> 
> Я образно, скажем чтобы считать траф мне нужно 3 параметра:
> время, ip и $bytes_sent
> В бинарном виде это 10 байт (если не ошибаюсь.) на 1 запись.
> 
> >> Мне вот сейчас нужено посчитать траффик с определенного хоста и
> >> сгрупировать по ip. А если мой лог весит 200мб+
> >> Как его читать то? А читать его надо каждые 5 мин.
> >> А бинарный просто, сами же понимаете...
> 
> IS> И как это выглядит - не загружая весь лог ?
> 
> Проблема в скорости, одно дело распарсить весь лог, другое вытащить
> нужные значения не загружая строки из файла.

Проблема в используемых инструментах.

> Я жаже не представляю, сколько времени парсить лог таким способом
> размером скажем в 2 гига.

>ls -lh home.access_log 
-rw-r--r--  1 nobody  wheel   2.5G Dec  6 17:15 home.access_log

>time wc -l home.access_log 
 8234472 home.access_log

real    2m1.475s
user    0m7.316s
sys     0m3.795s

Как видно, основное время - ожидание чтения с диска.

> >> Очень был бы рад, если в будующих версиях ченить подобное появится.
> 
> IS> Бинарные форматы - это зло, растираживанное Майкрософтом.
> IS> Для обработки бинарного формата нужно писать специальную программу, заточенную
> IS> под этот формат, тогда как для текстовых достаточно grep/awk/perl/etc.
> 
> Работаю с php, на нем как раз читать большие файлы быстро можно только
> в таком виде как описал. А искать конец строки, разбивать строку по
> параметрам это долго и накладно.
> Куда проще перемещаться по длине строке и читать нужный параметр зная
> где он и сколько их.

Пора бы оглянуться и увидеть, что мир состоит не только из php.
Есть ещё такая волшебная вещь, как регулярные выражения.


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





More information about the nginx-ru mailing list