Re[2]: Ассинхронный вывод в лог
От: rip_someday Украина  
Дата: 20.04.06 09:50
Оценка:
Здравствуйте, zaufi, Вы писали:

Z>Здравствуйте, rip_someday, Вы писали:


_>>Нужно:


_>>проанализировать подходы к эффективной запись в лог-файлы

_>>в том числе с использованием асинхронной записи.
_>>Лично мне кажется, что замена текущей (весьма медленной и корявой) имплементации "fopen-fwrite-fclose на каждую строку"
_>>на имплементацию с постоянно открытым файлом, буффером в ~64Кб и периодическим сбросом на диск вполне будет достаточно
_>>(по крайней мере судя по замерам — в 30-40 раз быстрее)

Z>Адназначна ДА! Делать окрытие файлов для записи строки в лог это УЖОС! Конечно же файлы нада держать вседа открытыми! Правда в случае fopen/fwrite/fclose делать свой буфер не есь хорошо... он уже там есть (и его размером мона поиграца еси я все прально помню из info по libc)! Собственный буфер имеет смысл при low level I/O -- open/write/close...


я так и сделал, ну не совсем же я дурак все-таки

Z> и лучше его сделать побольше! -- порядка 1.5М (зависит конечно от скорости заполнения буфера и того насколько страшно потерять нефлашеный лог в случае непредвиденных обстоятельств -- но основной смысл в том что писать нада риальна МНОГО -- контроллеры винчей порой имеют кэш 8 и более М -- нет повода стеснять себя килобайтами...


в принципе размер буффера можно подобрать потом, даже лучше сделать конфигурируемым.

_>>3. можно ли это сделать как-то иначе?


Z>конечно! оставь работу с логами на долю того кто под это заточен! -- а имена syslog демон

Z>означеная мегапрога генерила порядка 1Г (или даже больше -- точную цыфру не вспомню -- но РИАЛЬНА ДОФИГА) зипаных логов в день -- не все сислоги такое выдерживают.. но есь один который более менее работал в подобных условиях -- это был syslogng

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