• 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工具分析。

                

  • 相关阅读:
    springboot 集成RabbitMQ
    服务接口API限流 Rate Limit 续
    服务接口API限流 Rate Limit
    聊下并发和Tomcat线程数
    java 线程池 异步任务
    Tomcat中更改网站根目录和默认页的配置方法
    QPS从0到4000请求每秒,谈达达后台架构演化之路
    分布式与集群是什么 ? 区别是什么?
    大型网站技术架构演变总结
    提升高并发量服务器性能解决思路
  • 原文地址:https://www.cnblogs.com/hongyuansu/p/13871465.html
Copyright © 2020-2023  润新知