• 线上解决Resin服务响应过慢的几个方法
    时间:2012-02-26   作者:佚名   出处:互联网

    最近Web服务访问量过大,由于服务器配置比较差,数量也较少,导致服务响应过慢。为了优化服务和提高响应,下面总结出几条查询Resin问题的方法。

    1、查看服务器网络状态TIME_WAIT的数量。

    #netstat -antp|grep -i time_wait|wc -l查看TIME_WAIT数量,如果数量过多,并且Resin前端还有Nginx或者Apache,那么请把socket-timeout、keepalive-max和把keepalive-timeout调小

          <socket-timeout>30s</socket-timeout>
          <keepalive-max>512</keepalive-max>
          <keepalive-timeout>60s</keepalive-timeout>

    2、查看JVM中对象占用内存情况

    jmap 能查看jvm内存中,对象占用内存的情况,还提供非常方便的命令将jvm的内存信息导出的文件。

    #jmap -dump:format=b,file=heap.bin <pid> 

    命令jhat 能够解析 java内存堆的文件,生成相关信息,并启动webServer提供查询。 也就说,我们可以通过浏览器来看这些内存信息。jhat还提供了一个类sql的查询语言---OQL来给我们使用。

    #jhat -J-Xmx512m heap.bin    

    就可以将我们刚刚使用jmap导出的内存信息交给jhat解析了。默认的情况下,它会监听7000端口。我在本机的地址就是,http://localhost:7000/。
    访问http://localhost:7000/histo/,大致可以看到一下的画面,这里列出对象,对象实例数量、总占用内存大小。点击进去之后可以看到“谁引用了这个对象,这个对象又引用了哪个”这些信息。不过因为展示的信息非常多,并没有想象中那样清晰可见。

    3、dump获取java stack和native stack信息

    消息队列会突然堵塞,查看消费者日志,发现处理延时明显延长,而此时网络无丢包。最后多方排查,是java消费者运行出现死锁。
    这种问题可以通过jstack来dump获取java stack和native stack信息查明问题。

    #jstatck <pid>

    网友留言/评论

    我要留言/评论

    相关文章

    Java 中 Listener 模式示例:Listener模式在Java中很常见,并且很有用,下面例举一下Java的Listener模式,希望对大家有所帮助。
    Java Annotation手册(详解):在上篇文章《Java Annotation入门》中概要性的介绍了Annotation的定义、使用,范围涵盖较广,但是深度不够。所以作者在《Java Annotation入门》后,继续整理了Annotation的概念和知识点,与喜欢research的朋友们共享。
    利用 Java 6 javax.script 包直接处理 JSON:以往我们在Java中处理 JSON 数据时,经常会引用到各种 json 的第三方 jar 包。有时很简单的功能,而引用比较臃肿的包,是比较难以容忍的。很高兴我们可以使用Java 6 提供的 javax.script 包来处理。 Java 有了支持其他脚本语言的特性,例如 JavaScript。而 JavaScript 对 JSON 的支持是天生具备的。让我们来看一些实例。
    (DOM解析xml )Android中的XML解析与生成:DOM解析XML文件时,会将XML文件的所有内容以对象树方式存放在内存中,然后允许您使用DOM API遍历XML树、检索所需的数据。使用DOM操作XML的代码看起来比较直观,并且,在某些方面比基于SAX的实现更加简单。但是,因为DOM需要将XML文件的所有内容以对象树方式存放在内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小采用DOM是可行的。
    JRockit读书笔记I — Java代码的高效执行:《Oracle JRockit: The Definitive Guide》一书是由Oracle JRockit的两位资深开发人员写的,其中的Marcus Hirt更是JRockit Mission Control的leader,这本书详细的对Oracle JRockit进行了介绍,最突出的特点非常系统化的介绍了一个JVM通常是如何实现的,而JRockit这样一个极为优秀的JVM又是做了哪些优化,为什么做这些优化,这本书对于对JVM感兴趣的同学而言应该是必读的一本书,其实即使对于JVM兴趣不强的同学,里面的优化思路的介绍也是值得学习,本系列的blog主要是总结看这本书得到的一些收获,由于书中知识量巨大,因此得分成多篇blog来总结了。
    JSTL教程大全 - core篇和sql篇:最近又开始搞WEB部分开发,使用了JTSL,虽然知道这玩意很简单,但是真正做起来还是需要查询相关资料,搜了半天都没找到合适的,最后终于找到了一份较全的文档,给大家分享一下。JSTL标签、<c:choose>、<c:forEach>、<c:forTokens>、<c:if>、<c:import>、<c:otherwise>、<c:out>、<c:param>、<c:redirect>、<c:remove>、<c:url>、<c:when>、<c:set>、<c:catch>
    JSTL教程大全 - fn函数篇:最近又开始搞WEB部分开发,使用了JTSL,虽然知道这玩意很简单,但是真正做起来还是需要查询相关资料,搜了半天都没找到合适的,最后终于找到了一份较全的文档,给大家分享一下。
    有关Mina基础技术知识介绍:Apache MINA 是一个网络应用框架,有助于用户非常方便地开发高性能、高伸缩性的网络应用。初学MINA的同学开始可能会感觉迷茫,为了让初学者更快的入门,开源吧给大家准备一篇Mina入门介绍,希望对大家有所帮助。
    HashMap的几种遍历测试和总结:HashMap遍历是开发者经常遇到的,遍历的方式也有多种,但是哪种方式最优呢,笔者此次做了下测试,请看测试过程和结果。
    在Android中自定义标题栏之显示网页加载进度:最近在做Lephone的适配,测试组提交了一个bug:在标题栏的文字较长时没有显示完全,其实这并不能算个bug,并且这个问题在以前其他机器也没有出现,只是说在Lephone的这个平台上显示得不怎么美观,因为联想将原生的标题栏UI进行了修改。修改的过程中遇到了一个难题,系统自带的那个标题栏进度总能够到达100%后渐退,但是我每次最后到100%那一段显示不全,尝试了用线程程序死了卡主了不说,还是一样的效果,后来同事一句话提醒了我用动画。确实是这样我猜系统的也是这样实现的,等进度到达100%后,用动画改变它的透明度就ok了。