буфера логов apache

Nov 02, 2009 01:54

Был не прав http://schors.livejournal.com/652594.html
awind был более прав. На сотнях логов соль либо заметного эффекта нет. На одном-двух по идее должно работать. Но не проверял.

технологии, apache

Leave a comment

Comments 19

alixander November 2 2009, 08:22:48 UTC
> буфера

Когда вижу такое употребление множественного числа существительного "буфер", возникают мысли, с логами apache никак не связанные ;).

Reply


rdesperado November 2 2009, 09:47:16 UTC
А вот меня в последнее время мучает вопрос: а если логи апача засылать в syslog, будет ли лучше/быстрее или хуже/медленнее?

Reply

schors November 2 2009, 09:56:44 UTC
Чисто в теории смысл имеет. Но я не уверен что сислог лучшее место. Надо смотреть как он работает, что делать с этими логами... Тут же ещё вопрос - а нахера они. Я не вижу смысла их перекручивать ибо самое важное зачем они - отладка проблем с сайтом. Всё остальное можно уже проще сделать.

Reply

rdesperado November 2 2009, 09:59:54 UTC
собственно, апач умеет в сислог загонять только еррорлоги. и это правильно, так как аксесс-логи, кажется, все выключают =)

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

Reply

schors November 2 2009, 10:34:35 UTC
ээээ!! А как они ошибки-то смотреть будут?

Reply


checat November 2 2009, 10:21:28 UTC
И на одном-двух не должно. Из описания awind следует, что ты делаешь более редкими, но крупными операции копирования из буфера апача в кэш ФС, без fsync. На современных процессорах эти операции оптимизированы по самое нехочу. Последний использованный блок кэша не сбрасывается (IMHO) на диск, пока он обновляется достаточно часто. То есть количество дисковых операций не будет уменьшаться.

Остался неясным для меня вопрос, за счёт чего при сбросе лога получается атомарность. Это специальный вызов ядра, который блокирует конкурентные операции записи в тот же дескриптор?

Reply

schors November 2 2009, 10:52:35 UTC
Он просто весь буфер записывает за один раз.

Это... поставь эксперимент - ну сообери например инфу по всем NS'ам доменов зоны .ru. Задача простая. И пиши на диск. Сначала построчно, а потом по 1000 строчно. Удивишься.

Reply

schors November 2 2009, 10:52:45 UTC
Я просто пробовал.

Reply

jekel November 2 2009, 11:18:35 UTC
Что получилось? можно какие-то цифры показать?

Reply


awind November 2 2009, 12:47:20 UTC
Фил, современная ОС,это не ДОС.

druid@mirkwood:iobuftest$ cat test.c
#include

int main(int argc, char *argv[])
{
char *fname = "out";
char s[] = "12345678901234567890";
long count = 100000000;
FILE *out;
char *buf;

out = fopen(fname, "w");

if (atol(argv[1])) {
buf = malloc(atol(argv[1]));
if (setvbuf(out, buf, _IOFBF, atol(argv[1]))) {
printf("setvbuf filed\n");
} else {
printf("set buffer %d byte(s)", atol(argv[1]));
}
} else {
printf("no buffer\n");
}

while (count--) {
fputs(s, out);
}

}

druid@mirkwood:iobuftest$ time ./a.out 0 ( ... )

Reply


Leave a comment

Up