首页 > 编程语言 >Java分布式应用:性能调优

Java分布式应用:性能调优

时间:2023-03-08 11:40:18浏览次数:45  
标签:Java 分布式应用 消耗 调优 线程 JVM 方法 CPU


第五部分 性能调优

性能瓶颈的表象:

1.资源消耗过多、外部处理系统的性能不足

2.资源消耗不多,但程序的响应速度不够

Java分布式应用:性能调优_Java分布式应用

关于CPU
通常使用时间片、多核的方法达到对CPU的分割;
每个CPU核都运行一个可运行的线程队列;
线程是处理器调度的基本单位;

调优的方式:硬件、操作系统、JVM以及程序四个方面。

JVM优化:
idea 设置JVM参数

JVM参数
a.合理设置各个代的大小
b.选择合适的GC策略

程序优化:
CPU消耗严重
CPU us高的原因:执行线程无任何挂起动作,一直执行占领资源,导致线程饿死的现象。
解决方法:对这个线程增加Thread.sleep,以释放CPU的执行权,减低CPU的消耗。

CPU sy高的原因:线程的运行状态需要经常切换
解决方法:减少线程数

文件IO消耗严重
原因:多个线程在写大量地数据到同一文件当中
解决方法:异步写文件、批量读写、限流

网络IO消耗严重
原因:需要同时发送和接收过多的包。
解决方法:限流,如借助滑动窗口机制

内存消耗严重
原因:消耗过多JVM堆内存,造成GC频繁执行
解决方法:释放不必要的引用、使用对象缓存池、采用合理的缓存失效算法、合理使用软引用和弱引用

Java分布式应用:性能调优_解决方法_02


标签:Java,分布式应用,消耗,调优,线程,JVM,方法,CPU
From: https://blog.51cto.com/u_15997399/6107927

相关文章

  • Java分布式应用:分布式Java应用与Sun JDK类库
    第四部分分布式Java应用与SunJDK类库集合包CollectionList接口:List接口:List(有序、可重复)的实现类有ArrayList、Vector、LinkListArrayList、Vector底层是通过数组实现......
  • Java分布式应用:深入了解JVM
    第三部分深入理解JVMJava代码的执行过程Java源码编译机制javac将java源码转换成javaclass字节码java运行javaclass字节码Java编译后产生的是字节码,在运行的时候将字......
  • Java基础面试(三)
    Java基础面试(三)1.Java一个类当中如果没有构造函数,编译器会自动生成一个缺省的构造函数;如果这个类有其他的构造函数,编译器则不会提供缺省构造参数。2.SpringMVC与Struct2.......
  • 实现动态切换版本JDK8和JAVA17
    一、下载安装两个版本的JDK官网下载地址:JavaDownloads|Oracle下载安装成功后,安装路径E:\Java\上 JDK8 有两个包一个jdk1.8.0_231,一个jre1.8.0_231。JDK17只有一个j......
  • java map集合的基本功能
          ......
  • java标识符,关键字和运算符
    Java标识符和关键字数据类型​Java数据类型分为基本类型和引用类型。基本类型整数类型:byte,占一个字节范围:-128~127short,占两个字节范围:-32768-32767int,占4个字......
  • jmeter发送java请求
    本文描述jmeter如何发送java请求1.编写java请求,将加密、签名等封装,对外只暴露需要传的业务参数,jemter发送java请求时直接传入业务参数即可  具体代码如下:importco......
  • Paxos算法理解与java实现
    Paxos在分布式环境下应用非常广泛,是一致性算法里面优越的代表。Google的粗粒度锁服务Chubby的设计开发者Burrows曾经说过:所有一致性协议本质上要么是Paxos要么是其变体。......
  • Java堆分析
    在JVM中,有以下内存区间:堆、永久区、线程栈、直接内存内存溢出(OOM)的原因及解决方法堆溢出原因:占用大量堆空间,直接溢出解决方法:增大堆空间,及时释放内存永久区溢出原因:生成......
  • mybatis异常 java.lang.ClassCastException: com.sun.proxy.$Proxy445
    此类异常处理:java.lang.ClassCastException:com.sun.proxy.$Proxy445cannotbecasttocom.xxx.**MapperBridgeApplication启动类的注解没有扫描到对应的Mapper文......