Java 是一种高级编程语言,广泛应用于开发各种类型的应用程序,包括服务端应用。然而,随着应用程序规模和负载的增加,Java 服务性能可能会受到影响。本文将介绍如何进行 Java 服务性能优化,以提高应用程序的响应速度和吞吐量。
分析服务性能问题
在开始进行性能优化...
water
2年前 (2023-02-17) 1180℃ 0评论
2喜欢
之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》,当时对这个测试结果很疑惑,反复执行过多次,发现结果是一样的:
单线程下synchronized效率最高(当时感觉它的效率应该是最差才对);AtomicInteger效率最不稳定,不同并发情况下...
water
2年前 (2023-02-07) 1567℃ 0评论
1喜欢
前言
最近遇到几个系统 young gc 时间比较长,在 young gc 长的同时,系统负载也随时升高,因此熟读GC日志以及了解一些Jvm常见调优是必要的。
收获
看完应该有如下收获
熟悉young GC日志每一行啥意思(会看)。了解一些关键GC调优参...
water
2年前 (2023-02-07) 1645℃ 0评论
0喜欢
性能调优:
-XX:-OmitStackTraceInFastThrow 去掉优化多次抛异常
-XX:-UseBiasedLocking 去掉偏向锁(锁竞争激烈的场景下加上)
-XX:-UseCounterDecay 禁止JIT调用计数器衰减(默认情况下,每次...
water
2年前 (2023-02-07) 1247℃ 0评论
0喜欢
春节期间,高速上动不动就堵车,这是一种“背压”的现象。背压(back pressure),也叫“反压”,指的是下游系统处理过慢,导致上游系统阻塞的现象。我们来聊聊背压后面的流控吧。
流控策略
如上图,系统中存在三方:生产者(Producer)产生数据,通过管道(Pi...
water
2年前 (2022-09-05) 2007℃ 0评论
1喜欢
垃圾优先型垃圾回收器 (G1 GC) 是适用于 Java HotSpot VM 的低暂停、服务器风格的分代式垃圾回收器。G1 GC 使用并发和并行阶段实现其目标暂停时间,并保持良好的吞吐量。当 G1 GC 确定有必要进行垃圾回收时,它会先收集存活数据最少的区域(垃圾优...
water
2年前 (2022-07-13) 1054℃ 0评论
0喜欢
你好,我们项目中有依赖skywalking,但是我不确定是不是因为skywalking的原因,因为有两套环境都依赖了skywalking,只有其中一个环境的watch命令不行
org.apache.skywalkingapm-toolkit-logback-1.x8.4....
water
3年前 (2022-03-24) 5135℃ 0评论
5喜欢
首先,明确两点:
1.http连接池不是万能的,过多的长连接会占用服务器资源,导致其他服务受阻2.http连接池只适用于请求是经常访问同一主机(或同一个接口)的情况下3.并发数不高的情况下资源利用率低下
那么,当你的业务符合上面3点,那么你可以考虑使用http连接池...
water
3年前 (2022-03-24) 2512℃ 0评论
5喜欢
对比Spring Cloud Netflix Zuul和Spring Cloud Gateway
前面整理了两者的特点,现在对比来分析,得出以下结论:
两者均是web网关,处理的是http请求gateway对比zuul多依赖了spring-webflux,在spri...
water
3年前 (2022-03-23) 2305℃ 0评论
2喜欢
概述
为什么要对Spring Boot应用进行监控,那是因为一个应用的功能需要同时满足两方面的功能,一个满足业务需求功能,另一个就是非业务功能需求如监控,监控包括很多方面,应用的健康监控,性能指标监控,我上周主要的事情就是玩一遍Springboot的应用的监控,现在就是简...
water
3年前 (2022-03-23) 2128℃ 0评论
4喜欢
建议
程序中使用的缓存,请在cache-names里指明,如此,可以通过配置文件来明白程序中用到了哪些spring cache。请尽量对每一个cache分别设置缓存策略,因为不用的cache其使用的场景与缓存对象大小都不一样。分别设置缓存请使用common-spring-...
water
3年前 (2022-03-23) 1552℃ 0评论
0喜欢
欢迎来到 JVM 参数MarkStackSize的讨论专区
参数名称
MarkStackSize
取值类型
unsigned int
参数说明
Size of marking stack
用法及建议
使用该参数的正确姿势是-XX:...
water
3年前 (2022-03-23) 1429℃ 0评论
0喜欢
起因:在某个Java新项目希望引入好用的apm监控工具,对比了几款常见的框架后,选择了集成成本比较低的skywalking。
但是在压测的时候发生了很神奇的事情。应用会无缘无故卡顿导致压测效果不理想,排查了一遍代码认为不太可能是代码上使用锁导致。
排查:1、JVM ...
water
3年前 (2022-03-23) 2709℃ 0评论
5喜欢
当读取json文件的时候,如果json文件巨大,比如json文件中有900万条数据,大小有300多M,就不可以一次把数据都读到内存再解析。
第一内存受不了,第二CPU更受不了,所有的硬件和软件都受不了。
需要一种边读取,边解析的json操作类,FastJson可以实...
water
3年前 (2022-03-23) 3387℃ 0评论
5喜欢
问题背景
应用使用G1 GC,在某一时刻后,开始出现频繁的full gc
排查
通过gc 日志获取一些线索
存在大量大对象分配,大部分触发GC的原因为大对象分配,相关日志片段:[GC pause (G1 Humongous Allocation)
...
water
3年前 (2022-03-23) 2364℃ 0评论
6喜欢
什么才算是大对象?
在G1中,一个对象的大小超过了一个Region大小的50%,就是大对象。
大对象怎么分配?
大对象在G1中不会直接被分配到老年代,或者说大对象就根本不会进入老年代。G1是将堆内存分为一块块的Region,这些Region有时属于老年代有时属...
water
3年前 (2022-03-23) 1441℃ 0评论
0喜欢
背景
MapDB官网:http://www.mapdb.org
官方翻译之后的话:MapDB基于堆外存储、磁盘存储提供了Java的Maps、Sets、Lists、Queues等功能。它混合了Java集合框架和数据库引擎。它是基于Apache许可的免费的、开源的。
...
water
3年前 (2022-03-23) 1366℃ 0评论
1喜欢
Google 前几天公开了一篇谷歌的工程实践文档。而且文档的内容都是跟 code review 相关的内容,里面包含了 Google 工程师如何进行 code review 的内容,以及 code review 指南。 原文地址: google.github.io/eng-pr...
water
3年前 (2022-03-23) 987℃ 0评论
0喜欢
一 背景介绍
序列化与反序列化是我们日常数据持久化和网络传输中经常使用的技术,但是目前各种序列化框架让人眼花缭乱,不清楚什么场景到底采用哪种序列化框架。本文会将业界开源的序列化框架进行对比测试,分别从通用性、易用性、可扩展性、性能和数据类型与Java语法支持五方面给出对比...
water
3年前 (2022-03-23) 1134℃ 0评论
1喜欢
前一篇文章我们介绍了 Java 中的两个常见的序列化方式,JDK 序列化和 Hessian2 序列化,本文我们接着来讲述一个后起之秀——Kryo 序列化,它号称 Java 中最快的序列化框架。那么话不多说,就让我们来看看这个后起之秀到底有什么能耐吧。
Kryo 序列化
...
water
3年前 (2022-03-23) 1068℃ 0评论
0喜欢