Производительность системного журнала может быть Улучшена?

Вы всегда можете добавить тег привязки , где хотите. Как и в Свернутое встроенное меню , вы можете использовать следующее:


    
    
        Option 3
    

Я создал рабочую демонстрацию , пожалуйста, проверьте.

10
задан 2 revs, 2 users 100% 16 October 2008 в 12:35
поделиться

6 ответов

Можно настроить syslogd (и rsyslog, по крайней мере) для не синхронизации файлов журнала после сообщения журнала путем предварительного ожидания "-" к пути файла журнала в конфигурационном файле. Это ускоряет производительность за счет опасности, что сообщения журнала могли быть потеряны в катастрофическом отказе.

20
ответ дан 3 December 2019 в 14:19
поделиться

Существует несколько опций улучшить производительность системного журнала:

  • Оптимизация звонит с макросом

     int LogMask = LOG_UPTO(LOG_WARNING);
     #define syslog(a, ...) if ((a) & LogMask ) syslog((a), __VA_ARGS__)
    
     int main(int argc, char **argv)
     {
              LogMask = setlogmask(LOG_UPTO(LOG_WARNING));
              ...
     }
    

    Преимущество использования макроса для фильтрации вызовов системного журнала состоит в том, что весь вызов уменьшается до условного перехода на глобальной переменной, очень полезной, если у Вас, оказывается, есть вызовы ОТЛАДКИ, которые переводят большие наборы данных через другие функции.

  • setlogmask ()

    setlogmask(LOG_UPTO(LOG_LEVEL))
    

    setlogmask () оптимизирует вызов, не регистрируясь к/dev/log, но программа все еще вызовет функции, используемые в качестве аргументов.

  • фильтрация с syslog.conf

     *.err                                               /var/log/messages
    

    "проверьте страницу справочника для syslog.conf для деталей".

  • настройте системный журнал, чтобы сделать асинхронный или буферизованный вход

    метажурнал раньше буферизовал вывод журнала и сбросил его в блоках. системный журнал запаса и системный-журнал-ng не делают этого насколько я знаю.

6
ответ дан 3 December 2019 в 14:19
поделиться

Прежде, чем загрузиться в новом демоне, пишущем Вам, может проверить, быстрее ли системный-журнал-ng (или может быть настроен, чтобы быть быстрее), чем простой системный журнал.

4
ответ дан 3 December 2019 в 14:19
поделиться

Один прием, который можно использовать при управлении источником к регистрирующемуся приложению, должен кашировать уровень журнала, который Вы хотите в самом приложении, вместо в syslog.conf. Я сделал это несколько лет назад с приложением, которое генерировало огромную, огромную, огромную сумму журналов отладки. Вместо того, чтобы удалять вызовы из производственного кода, мы просто замаскировали так, чтобы вызовы уровня отладки никогда не отправлялись демону. Я на самом деле нашел код, это - Perl, но это - просто передняя сторона к setlogmask (3) вызов.

use Sys::Syslog;
# Start system logging
# setlogmask controls what levels we're going to let get through.  If we mask
# them off here, then the syslog daemon doesn't need to be concerned by them
# 1   = emerg
# 2   = alert
# 4   = crit
# 8   = err
# 16  = warning
# 32  = notice
# 64  = info
# 128 = debug
Sys::Syslog::setlogsock('unix');
openlog($myname,'pid,cons,nowait','mail');
setlogmask(127); # allow everything but debug
#setlogmask(255); # everything
syslog('debug',"syslog opened");

Не уверенный, почему я использовал десятичное число вместо битовой маски..., пожимают плечами

3
ответ дан 3 December 2019 в 14:19
поделиться

Запишите свою собственную реализацию системного журнала.:-P

Это может быть выполнено двумя способами.

  1. Запишите свое собственное LD_PRELOAD сцепитесь, чтобы переопределить функции системного журнала и заставить их произвести к stderr вместо этого. Я на самом деле записал сообщение об этом много лет назад: http://marc.info/?m=97175526803720 :-P
  2. Запишите Вашему собственному демону системного журнала. Это - просто простой вопрос захвата датаграмм из /dev/log! :-P

Хорошо, хорошо, таким образом, это оба остроумные ответы. Вы представили syslogd видеть, где это засоряет больше всего?

1
ответ дан 3 December 2019 в 14:19
поделиться

Можно настроить уровень syslogd (или средство) для входа асинхронно путем помещения минус перед путем к файлу журнала (т.е.: пользователь.* [вкладка] -/var/log/user.log).

Удачи.

1
ответ дан 3 December 2019 в 14:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: