设为首页 收藏本站
查看: 650|回复: 0

[经验分享] apache log引发io问题

[复制链接]

尚未签到

发表于 2017-1-1 08:12:45 | 显示全部楼层 |阅读模式
  目前公司中使用到了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: 

cronlog10并发20并发50并发100并发 
Blk_wrtn/s  3720

507766219394
cpu iowait1%1.2%1.4%2.2%
request tps1310175125633241




syslog(本地文件 同步输出):

syslog10并发20并发50并发100并发 
Blk_wrtn/s  1808

179018451760
cpu iowait11.9%12.2%12.6%12.4%
request tps58505148






syslog(本地文件 异步输出): http://stackoverflow.com/questions/208098/can-syslog-performance-be-improved


syslog10并发20并发50并发100并发 
Blk_wrtn/s
1235

162441127712
cpu iowait0.39%0.87%1%0.86%
request tps5761163.208823675






syslog(网络传输):


syslog10并发20并发50并发100并发 
request tps1561210731533320








测试环境

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




总结:


  • syslog基于本地磁盘的日志记录,在性能上存在比较严重的性能瓶颈,在测试时需要留意。
  • syslog基于异步文件记录,性能上接近于网络传输的性能
  • 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进程。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-322177-1-1.html 上篇帖子: Apache 配置文件的含义 下篇帖子: 转载: Apache Zookeeper入门1
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表