Изменения в nginx 0.3.7 27.10.2005
*) Добавление: директива access_log поддерживает параметр buffer=.
*) Исправление: nginx не собирался на платформах, отличных от i386,
amd64, sparc и ppc; ошибка появилась в 0.3.2.
Буферизация логов включается так:
access_log /path/to/log format buffer=32k;
Размер буфера не моежт быть больше размера атомарной записи
в дисковый файл для OS. Во FreeBSD это размер неограничен, судя по коду
в src/sys/kern/vfs_vnops.c (4.10):
vn_write(fp, uio, cred, flags, p)
{
[ ... ]
VOP_LEASE(vp, p, cred, LEASE_WRITE);
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
if ((flags & FOF_OFFSET) == 0)
uio->uio_offset = fp->f_offset;
ioflag |= sequential_heuristic(uio, fp);
error = VOP_WRITE(vp, uio, ioflag, cred);
if ((flags & FOF_OFFSET) == 0)
fp->f_offset = uio->uio_offset;
fp->f_nextoff = uio->uio_offset;
VOP_UNLOCK(vp, 0, p);
return (error);
}
В 6.0 код подобный.
Игорь Сысоев
http://sysoev.ru