zoukankan      html  css  js  c++  java
  • JVM调优实战

    1.jvm调优分类

    1.1JVM预调优:

    根据业务场景,注重吞吐量还是注重响应时间;

    提升硬件性能,最简单,但是成本最高。

    1.2程序卡顿:

    1.3OOM:

    2.秒杀场景JVM调优:每秒2000并发量。采用负载均衡,平均每台服务器每秒500并发量。

    场景一:大量的请求访问到服务器,造成JVM的新生代瞬间产生大量对象,占用大量内存,当survivor区域内的对象占到空间的一半儿时,直接将对象放入Old区。

                那么许多朝生夕死的对象,就会进入到Old区。Old区进行FullGC时,采用标记整理的方式,比较耗时,所以,大量朝生夕死的对象进来到Old区后,比较耗费性能。

    解决方案:增大新生代内存,使Survivor区内存不被占用太满而导致对象直接进入Old区。这样,朝生夕死的对象就不会直接进入Old区,这样就减少了FullGC的次数,提升了

                    效率。

                     缩小栈的内存,一般256k就够。

    3.CPU占用过高100%的调优思路:

    两种情况:线程死锁和GC频繁。

    解决思路;Top命令查看占用CPU高的进程;用jstack输出线程信息;定位占用CPU高的线程;定位具体代码;

    4.JVM调优实例

    场景一:采用jdk线程池,设置了相应参数,但是请求数过多,导致线程池中阻塞队列中的对象过多,导致内存溢出,报OOM错误。报limit exceed错误。Old区全是阻塞队列的对象,但是GC不能将其回收,所以报这个错误。

    场景二:static变量里,存入了过多的无关对象,造成了内存泄漏,从而发生了OOM。

                连接(IO等)未关闭;

    5.当已经发生OOM,需要排查时,就要用到dump堆日志文件了。

    排查dump日志,用MAT工具。

    内存泄漏如何排查:1.采用MAT工具分析。

                

  • 相关阅读:
    PHP Cookies
    PHP 文件上传
    PHP 文件
    02_电话拨号器intent说明
    13_传智播客iOS视频教程_OC程序的编译链接
    12_传智播客iOS视频教程_注释和函数的定义和调用
    11_传智播客iOS视频教程_NS前缀和@符号
    10_传智播客iOS视频教程_NSString
    09_传智播客iOS视频教程_自动释放池与NSLog函数
    08_传智播客iOS视频教程_Foundation框架
  • 原文地址:https://www.cnblogs.com/hongyuansu/p/13871465.html
Copyright © 2011-2022 走看看