`
agapple
  • 浏览: 1591644 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

apache log引发io问题

阅读更多

 

目前公司中使用到了apache+jetty/jboss的架构模式,apache承担了日志记录的一个职责。

 

同事在做性能测试时,发现一个奇怪的现象:15个并发直接压apache,load居然达到了100多,tps只有200多。直接压后端的jboss tps可以有1000多。

 

1. 刚开始以为是apache keepalive的搞怪,但后来确认apache配置文件的keepalive模式已经是Off。看了下tcp状态,近1000个close_wait状态(说明是客户端主动关闭,服务端是被动关闭),ESTABLISHED也就20多个.

 

2. 下一步确认apache和后端的jboss链接是否存在异常,通过观察mod_jk的日志文件,ajp协议的tcp链接状态,一切正常,而且链接数也就是80来个,说明到后端的压力并不高。

 

3. 进一步确认apache线程数,发现apache_error.log已经出现Max Client的现象,链接数过多。

 

[Sat Mar 12 17:44:31 2011] [error] server reached MaxClients setting, consider raising the MaxClients setting

 

4. 查了下系统的性能参数(nnd,机器上居然没装sysstat包,sar,iostat命令都用不了),使用vmstat -n 1看了下。 发现cpu 的iowait参数居然达到了60%,基本猜想估计是apache日志记录出了问题

 

5. 检查apache conf文件,使用的log配置。

 

CustomLog "|/usr/alibaba/cronolog/sbin/cronolog /home/ljh/output/logs/cookie_logs/%w/cookie_log" cookie_log 
CustomLog "|/usr/bin/logger -p local1.info" cookie_log 

 

使用了两个CustomLog.

 

  • cronolog 项目使用比较普遍,目前是按周进行cookie访问日志处理,是一个io处理的点。
  • logger系统自带的syslog的接口api。syslog可以支持本地打印和网络打印等。具体的内容可以man logger /  man syslog
6. 后来确认是syslog引起的问题。
测试环境的redhat版本和线上的测试环境不一致,local1.info在syslog配置中是记录到了/var/log/message本地文件,说白了syslog多走了一次IO。

通过sar命令简单的分析了cronolog和syslog的io tps性能数据.
cronlog: 
cronlog 10并发 20并发 50并发 100并发 
Blk_wrtn/s

3720

 

5077 6621 9394
cpu iowait 1% 1.2% 1.4% 2.2%
request tps 1310 1751 2563 3241

syslog(本地文件 同步输出):
syslog 10并发 20并发 50并发 100并发 
Blk_wrtn/s

1808

1790 1845 1760
cpu iowait 11.9% 12.2% 12.6% 12.4%
request tps 58 50 51 48

syslog 10并发 20并发 50并发 100并发 
Blk_wrtn/s

1235

1624 4112 7712
cpu iowait 0.39% 0.87% 1% 0.86%
request tps 576 1163. 20882 3675

syslog(网络传输):
syslog 10并发 20并发 50并发 100并发 
request tps 1561 2107 3153 3320


测试环境
1. Linux 内核 2.6.18-131.el5.customxen 64位机器,是个虚拟机, 5G内存。
2. apache 2.2.15
3. cronolog  1.6.2
4. syslog  1.4.1

总结:
  1. syslog基于本地磁盘的日志记录,在性能上存在比较严重的性能瓶颈,在测试时需要留意。
  2. syslog基于异步文件记录,性能上接近于网络传输的性能
  3. syslog基于网络数据日志记录的,单从request tps上看要略优于cronolog,但具体数据的发送的准确性就没有验证了


补充说明

apache关于日志的使用说明文档:http://httpd.apache.org/docs/2.2/logs.html

针对这cronolog 和 syslog日志记录的使用优化,可以参考http://httpd.apache.org/docs/2.2/logs.html#piped

 

针对syslog使用,网上是建议是使用syslog-ng,据说性能更好。目前公司的线上服务器也使用的是syslog-ng替换默认的syslogd进程。

分享到:
评论
2 楼 agapple 2011-03-17  
ZavaKid 写道
syslog和syslong-ng是如何进行测试的呀?


没在机器上测试过syslog-ng的性能,其实测试下来也就syslog的同步输出性能比较差。
这样一分析对比,cronolog也应该是采用异步输出进行处理,不然性能不会这么好
1 楼 ZavaKid 2011-03-15  
syslog和syslong-ng是如何进行测试的呀?

相关推荐

    dumpio2curl:解析Apache 2.4 dumpio日志

    "dumpio2curl"是一个非常实用的工具,专门用于解析Apache 2.4的dumpio日志,并将其转换为可执行的curl命令。这对于测试、调试或者理解HTTP请求和响应的细节具有很大的价值。 Apache 2.4的dumpio日志模式是Apache...

    Log4jToWriterAppender.zip

    WriterAppender是Log4j的一个组件,它允许我们将日志信息写入到任何实现了java.io.Writer接口的对象,如System.out、文件、数据库等。在项目中,我们使用UTF-8编码,这是国际化的标准,确保日志中的非ASCII字符能够...

    log4j-parser:使用本机Apache Log4J API的Log4J解析器

    总结来说,log4j-parser是一个强大的工具,它可以帮助开发者和运维人员高效地管理和分析Apache Log4j生成的日志数据,从而提升问题诊断、性能优化和运维自动化的能力。通过深入理解和应用这个解析器,我们可以更好地...

    log4j中配置日志文件相对路径方法(PDF)

    log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender log4j.appender.logfile.File=${WORKDIR}/logs/app.log log4j.appender.logfile.DatePattern='.'yyyy-MM-dd log4j.appender.logfile.layout=org....

    Hadoop-NativeIO.java

    标题 "Hadoop-NativeIO.java" 指涉的核心知识点是 Hadoop 在本地环境下的调试,特别是涉及到 org.apache.hadoop.io.nativeio.NativeIO$Windows.access0 方法的问题。在Hadoop框架中,NativeIO 是一个用于执行低级...

    apache lib (new)

    Apache Commons是Apache项目的一部分,它提供了许多Java编程中的实用工具类,如IO、Lang、Collections等模块。这些库简化了常见的编程任务,提高了代码的可读性和可维护性。例如,Commons IO库可以帮助处理文件和流...

    ErrorLog allows web developers quick and easy access to clearly formatted entries from the apache error_log file

    1. **清晰格式化展示**:ErrorLog能够将原始的日志条目格式化为易于阅读的形式,方便开发者迅速定位问题。 2. **多行条目合并**:对于多行的日志条目,ErrorLog能够自动合并,同时保留原始的空格格式,确保日志信息...

    Apache+Tomcat+MySQL 环境搭建

    LoadModule logio_module modules/mod_logio.so LoadModule log_config_module modules/mod_log_config.so LogFormat "%h %l %u %{%Y-%m-%d-%H-%M-%S}t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{X-...

    Log4j的配置与使用

    Log4j作为Apache组织下的一个开源项目,是一个非常强大的日志组件,能够为应用程序提供方便且灵活的日志记录服务。在软件开发过程中,良好的日志记录机制对于系统的调试、监控以及问题追踪等都具有重要意义。 #### ...

    Apache HTTP Server Version 2.2 文档(2013.4.10最新)

    mod_logio mod_log_config mod_log_forensic mod_mem_cache mod_mime mod_mime_magic mod_negotiation mod_nw_ssl mod_proxy mod_proxy_ajp mod_proxy_balancer mod_proxy_connect mod_proxy_ftp mod_proxy_http mod...

    log4j自定义日志文件名及日志输出格式

    Log4j是Apache提供的一款广泛使用的日志框架,它提供了丰富的配置选项,允许开发者灵活地控制日志输出。当我们面对特定项目需求,比如需要自定义日志文件名和日志输出格式时,Log4j同样提供了相应的解决方案。 首先...

    apache工具包详细解释

    11. **Apache Log4j**:这是一个流行的日志记录框架,提供了灵活的日志配置和多种输出格式,帮助开发者跟踪和调试应用。 12. **Apache Hadoop**:针对大数据处理的分布式计算框架,包括HDFS(分布式文件系统)和...

    Log4j 详细配置

    为了提高性能,Log4j 提供了异步日志记录器(AsyncAppender)和缓存日志事件(BufferedIO)。此外,合理地设置日志级别和 Appender 可以避免不必要的日志处理,降低系统负载。 ### 9. 日志滚动与归档 如配置中的 ...

    Log4j使用教程

    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n # 文件输出 log4j.appender.FILE=org.apache.log4j....

    log4j配置详解.

    - `org.apache.log4j.WriterAppender`:将日志输出到任何实现了`java.io.Writer`接口的对象。 4. **常用的布局(Layout)**:Log4j同样提供了多种布局方式,以定制日志的输出格式: - `org.apache.log4j.HTMLLayout...

    Apache Commons官网下的jar包

    在 Apache Commons 项目中,每个特定的功能或模块都有一个单独的子项目,如 Commons Lang、Commons IO、Commons Collections 等。这些子项目分别关注不同的编程任务,例如字符串处理、I/O 操作、集合操作等。 标题...

    apache的包

    6. **日志管理**: Apache可以记录详细的访问日志,这对于分析网站流量、监控异常访问和调试问题非常有用。默认的日志文件通常为`access_log`和`error_log`。 7. **虚拟主机**: Apache支持在同一台服务器上托管多个...

    log4j记录压缩日记

    Log4j是Apache的一个开源项目,它为应用程序提供了灵活的日志记录功能,包括输出格式、日志级别管理以及日志文件的滚动策略等。在某些场景下,为了节省存储空间和提高管理效率,我们会选择将日志文件进行压缩。 **...

    Unity log4net dll

    log4net是一款由Apache软件基金会开发的开源日志框架,广泛应用于.NET平台。它的设计理念是提供一种灵活、可配置的日志解决方案,使得开发者可以方便地控制日志输出的级别、格式和目的地。log4net支持多种输出方式,...

    详细讲解Java中log4j的使用方法

    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n # 定义滚动文件输出的Appender log4j.appender.R=org.apache.log4j....

Global site tag (gtag.js) - Google Analytics