我们在Linux上有一个使用syslog机制的应用程序。在花了一周的时间试图找出这个应用程序运行速度比预期慢的原因后,我们发现,如果我们消除了syslog,只需直接写入日志文件,性能就会显著提高。
我理解为什么syslog比直接文件写入慢。但我想知道:有没有办法配置syslog来优化它的性能?
发布于 2008-10-16 11:12:39
您可以将syslogd (至少是rsyslog )配置为在出现日志消息后不同步日志文件,方法是在配置文件中的日志文件路径前添加一个"-“。这以日志消息可能在崩溃中丢失的危险为代价来提高性能。
发布于 2008-11-18 18:46:02
有几个选项可以提高syslog性能:
int syslog= LOG_UPTO(LOG_WARNING);#定义syslog(a,...)如果((a) & LogMask ) syslog((a),__VA_ARGS__) int main(int argc,char **argv) { LogMask = setlogmask(LOG_UPTO(LOG_WARNING));... }
使用宏来过滤syslog调用的一个优点是,整个调用被简化为全局变量上的条件跳转,如果您碰巧有调试调用正在通过其他functions.
setlogmask(LOG_UPTO(LOG_LEVEL))
setlogmask()将通过不记录到/dev/log来优化调用,但程序仍然会调用syslog.conf中用作arguments.
*.err /var/日志/消息
“查看details."
metalog用于缓冲日志输出,并将其按块刷新。据我所知,股票syslog和syslog-ng不能做到这一点。
发布于 2008-10-16 11:08:59
在开始编写新的守护进程之前,您可以检查syslog-ng是否比普通的旧syslog更快(或者可以配置为更快)。
https://stackoverflow.com/questions/208098
复制相似问题