性能怎么调优,哪些参数,解决办法?

性能调优

1、怎么优化,根据哪些参数

1.1、影响性能的参考因素:
  • CPU、大量计算会长时间的占用CPU资源,代码递归导致无限循环,正则表达式回溯、JVM频繁的Full GC、多线程大量上下文切换。都会导致CPU资源繁忙
  • 内存
  • 磁盘I/O
  • 网络
  • 异常:抛出异常需要构建异常栈,对迎春进行捕捉处理这个过程非常消耗系统性能
  • 数据库
  • 锁竞争
1.2、衡量性能的几个参考因素:
  • 响应时间
    • 服务端响应时间:包括Nginx分发请求和程序执行时间
    • 网络延迟:是网络传输时间
    • 客户端时间:对于广大用户来说,这段可以忽略不计,如果客户端嵌入了大量逻辑,消耗时间就就有可能变长了。
  • 吞吐量:比较接口的事务处理量(TPS)
    • 磁盘吞吐
    • 网络吞吐:网卡、光纤、防火墙
  • 计算机资源分配率:CPU占比率、内存使用率、磁盘I/O、网络I/O这几个参数需要合理分配
  • 负载承受能力

但是在项目开始阶段,没有必要过早的介入性能优化,只需要在编码的时候保证其优秀、高效,以及良好的程序设计

2、如何制定优化策略

测试-分析-调优 三步走

2.1、常见问题
  • 热身问题:第一遍程序是需要经过编译,才能执行,随着代码执行次数增多,虚拟机发现某方法和代码特别频繁时,会认定为(Hot Spot Code)热点代码,会将其存储在内存中。
  • 测试结果不稳定:多搞两次
  • 多 JVM 情况下影响:多个Java程序部署在不同Tomcat下,任意一个JVM拥有整个系统的资源使用权,要避免这种情况做测试
2.2、解决方案
  1. 优化代码
  2. 优化设计:单利模式等
  3. 优化算法:降低时间复杂度
  4. 时间换空间:String中 intern 方法
  5. 空间换时间:分库分表
  6. 参数调优:调整JVM参数
  7. 兜底策略:保证系统稳定
    1. 限流,设置最大访问量,采取熔断措施,友好返回失败请求
    2. 智能化横向扩容,当访问量超过某个阈值,系统根据需求自动新增服务
    3. 提前扩容,适用于高并发系统(每年双十一淘宝等电商服务)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JVM 调优是保证 Java 应用程序高性能运行的关键之一。以下是一些 JVM 调优的注意事项: 1. 观察 JVM 运行状态:使用 JVM 监控工具,例如 jstat、jconsole、jvisualvm 等,观察 JVM 的运行状态,包括内存使用情况、CPU 占用率、线程数等指标,以便及时发现问题并进行调整。 2. 调整堆内存大小:堆内存是 Java 程序最重要的内存区域,需要根据实际情况进行调整。一般情况下,可以通过设置 JVM 参数 -Xms 和 -Xmx 来调整初始堆大小和最大堆大小。 3. 选择合适的垃圾回收器:JVM 支持多种垃圾回收器,例如 Serial、Parallel、CMS、G1 等。不同的垃圾回收器具有不同的优缺点,需要根据实际情况进行选择。 4. 避免频繁 Full GC:Full GC 是一种比较耗时的垃圾回收操作,一般情况下应该尽量避免频繁触发。可以通过调整垃圾回收器的参数、优化代码实现等方式来避免频繁 Full GC。 5. 合理使用线程:线程是 Java 程序中的重要资源,需要根据实际情况进行合理的使用。过多的线程会占用过多的内存和 CPU 资源,导致程序性能下降,甚至引起死锁等问题。 6. 避免内存泄漏:内存泄漏是 Java 程序中常见的问题,会占用大量内存空间导致程序性能下降。需要及时发现并修复内存泄漏问题,例如使用工具进行内存泄漏检测、优化代码实现等方式。 7. 充分利用硬件资源:JVM 调优不仅仅是针对软件层面的优化,还需要充分利用硬件资源,例如使用 SSD 硬盘、增加 CPU 核数等方式来提高程序性能。 需要注意的是,JVM 调优是一个复杂的过程,需要根据具体的应用场景进行调整。同时,JVM 调优也需要进行充分测试和评估,以确保调整后的 JVM 能够稳定运行并提高程序性能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xiang想`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值