Чисто в теории смысл имеет. Но я не уверен что сислог лучшее место. Надо смотреть как он работает, что делать с этими логами... Тут же ещё вопрос - а нахера они. Я не вижу смысла их перекручивать ибо самое важное зачем они - отладка проблем с сайтом. Всё остальное можно уже проще сделать.
собственно, апач умеет в сислог загонять только еррорлоги. и это правильно, так как аксесс-логи, кажется, все выключают =)
мне идея сислога нравится тем, что этот демон давно и хорошо заточен под логгирование, его можно вынести на отдельную машину и вообще, хранить логи в одном месте это хорошо, на мой взгляд.
И на одном-двух не должно. Из описания awind следует, что ты делаешь более редкими, но крупными операции копирования из буфера апача в кэш ФС, без fsync. На современных процессорах эти операции оптимизированы по самое нехочу. Последний использованный блок кэша не сбрасывается (IMHO) на диск, пока он обновляется достаточно часто. То есть количество дисковых операций не будет уменьшаться.
Остался неясным для меня вопрос, за счёт чего при сбросе лога получается атомарность. Это специальный вызов ядра, который блокирует конкурентные операции записи в тот же дескриптор?
Это... поставь эксперимент - ну сообери например инфу по всем NS'ам доменов зоны .ru. Задача простая. И пиши на диск. Сначала построчно, а потом по 1000 строчно. Удивишься.
Comments 19
Когда вижу такое употребление множественного числа существительного "буфер", возникают мысли, с логами apache никак не связанные ;).
Reply
Reply
Reply
мне идея сислога нравится тем, что этот демон давно и хорошо заточен под логгирование, его можно вынести на отдельную машину и вообще, хранить логи в одном месте это хорошо, на мой взгляд.
Reply
Reply
Остался неясным для меня вопрос, за счёт чего при сбросе лога получается атомарность. Это специальный вызов ядра, который блокирует конкурентные операции записи в тот же дескриптор?
Reply
Это... поставь эксперимент - ну сообери например инфу по всем NS'ам доменов зоны .ru. Задача простая. И пиши на диск. Сначала построчно, а потом по 1000 строчно. Удивишься.
Reply
Reply
Reply
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