Java性能优化
文章平均质量分 83
Java性能优化
思静鱼
大道至简,行稳致远
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 重连机制
一般是指在网络通信(HTTP、WebSocket、MQ、数据库连接等)中,客户端和服务端断开后,客户端需要具备的能力,保证服务高可用。原创 2025-09-02 14:01:06 · 519 阅读 · 0 评论 -
分库分表(Sharding)的使用
分库:将一个数据库中的数据拆分到多个数据库中。分表:将一个表中的数据拆分到多个表中。Sharding:分库分表的统称。其本质是一种水平拆分方式,将数据分散到不同的物理节点上。分库分表是应对海量数据和高并发流量的终极方案之一,但它引入了巨大的复杂度。ShardingSphere 等中间件极大地降低了使用门槛,使得开发者可以更专注于业务逻辑。其核心流程可以概括为以下几步:fill:#333;color:#333;color:#333;fill:none;是否应用程序发起SQL请求。原创 2025-09-01 17:40:47 · 1047 阅读 · 0 评论 -
RabbitMQ 的消息默认不是单线程取消息的,但消费者的并发度默认是 1
配置了和prefetch=2后,其工作流程如下:fill:#333;Channel.consume() - 准备接收消息loop[对于每个消费者线程 (共5个)]Queue中有10条消息待处理... (分发至所有线程)loop[消息分发 (根据prefetch=2)]每个线程的本地缓存中有2条消息...par[线程1处理消息1][线程2处理消息3][其他线程并行处理]线程2处理更快,先空闲下来线程2的Channel: 请求新的消息(因为prefetch=2,已Ack了2条)原创 2025-08-28 10:34:55 · 1004 阅读 · 0 评论 -
JavaMelody应用性能监控
它是什么:一个简单、轻量、功能强大的单应用性能监控工具。核心用途:快速定位接口性能瓶颈、分析慢 SQL、监控 JVM 健康状况。最大优点集成简单,几分钟内就能看到效果,可视化做得非常好。适用场景开发和测试环境:快速调试性能问题。中小型生产环境:作为轻量级的监控解决方案。大型生产环境:作为 Prometheus 等标准监控系统的补充,因为它提供的 SQL 和 HTTP 请求详情非常直观,便于开发者直接排查问题。原创 2025-08-28 09:29:50 · 870 阅读 · 0 评论 -
Arthas 怎么在tomcat使用
场景推荐方法优点临时排查线上问题方法一:标准Attach无需重启,无需修改配置,最安全快捷无法SSH,但能通网络方法二:Web Console通过浏览器访问,非常方便Tomcat运行在容器中方法三:进入容器与方法一逻辑一致,只是环境在容器内需要长期监控方法四:Java Agent随应用启动,但侵入性强或jps -l找到 PID。启动并选择进程。开始使用dashboardthreadwatch等命令进行诊断。这种方法对应用完全无侵入,是线上排查的黄金标准。原创 2025-08-27 16:08:44 · 982 阅读 · 0 评论 -
Arthas诊断工具
Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。在使用 Arthas 之前,当遇到 Java 线上问题时,如 CPU 飙升、负载突高、内存溢出等问题,你需要查命令,查网络,然后 jps、jstack、jmap、jhat、jstat、hprof 等一通操作。最终焦头烂额,还不一定能查出问题所在。而现在,大多数的常见问题你都可以使用 Arthas 轻松定位,迅速解决,及时止损,准时下班。用的都是jdk自带的小工具,比如jps、jmap、jstack等。原创 2025-08-27 14:01:07 · 638 阅读 · 0 评论 -
宽表设计详解
宽表,顾名思义,是一种列非常多的表。将业务相关的多个主题、多个实体(Entity)的数据,通过预先的关联(Join)和计算,整合到一张大表中。这种做法的目的是为了极大程度地减少查询时表关联(JOIN)的操作,从而提升查询性能,让数据分析师和业务人员能够更快、更直接地获取到所需的全部信息。一个简单的例子:传统范式化设计:你可能有一个用户基本信息表、一个用户订单表、一个用户地址表和一个用户行为日志表。宽表设计:你将上述四张表的关键信息(通过用户ID关联)全部合并到一张用户全景宽表中。原创 2025-08-27 10:21:50 · 798 阅读 · 0 评论 -
优化慢 SQL
慢 SQL(Slow SQL)通常是数据库性能瓶颈的主要来源,优化慢 SQL 可以极大提升系统响应速度和并发处理能力。下面是系统化的 慢 SQL 排查与优化方案,适用于 MySQL / PostgreSQL / Oracle 等主流数据库。原创 2025-08-27 10:09:18 · 445 阅读 · 0 评论 -
常用的 慢 SQL 优化方法
慢 SQL 优化要从。原创 2025-08-27 10:06:12 · 515 阅读 · 0 评论 -
java常用组件/中间件的连接数
在 Java 系统中,原创 2025-08-26 15:09:36 · 424 阅读 · 0 评论 -
CompletableFuture常见的java场景
场景描述常用方法异步执行将耗时任务提交到线程池,避免阻塞主线程runAsync任务链一个任务接一个任务地执行,后续任务依赖前一个任务的结果thenApply聚合结果并行执行多个独立任务,并处理它们的聚合结果allOfanyOf异常处理优雅地处理异步流水线中可能发生的异常handle结果消费在任务完成后执行一些副作用操作,如日志、通知thenAcceptthenRun它非常适合用于构建高性能、高并发的服务,例如微服务架构中同时调用多个下游服务并聚合结果的场景。它是传统Future。原创 2025-08-26 10:20:19 · 664 阅读 · 0 评论 -
MySQL 磁盘和 Redis 内存
这是因为 MySQL 和 Redis 设计目标不同,它们是为满足不同的性能需求和应用场景而设计的:场景组合建议Redis 和 MySQL 常常“配合使用”:● MySQL 作为主数据库,保存完整业务数据● Redis 做缓存,减轻数据库压力,加速访问速度(缓存预热、热点数据等)原创 2025-08-25 17:59:26 · 688 阅读 · 0 评论 -
Java 高可用实现方式
在 Java 项目中实现高可用集群,通常需要结合基础架构(如 Nginx、ZooKeeper、Redis、数据库)以及 Java 应用层逻辑来实现服务不间断、故障自动转移、负载均衡等能力。以下是 Java 实现高可用集群常见方法和技术方案:一、常见 Java 高可用实现方式。原创 2025-08-25 16:59:06 · 629 阅读 · 0 评论 -
高可用集群
高可用集群”(High Availability Cluster,简称 HA 集群)是一种通过多个服务器协作工作来确保系统在部分节点故障时仍能持续提供服务的架构方案。高可用集群的目标是:尽可能减少单点故障(SPOF)并提供连续的服务可用性。当某个节点宕机、异常、断电等,其他节点会自动接管服务,用户几乎无感知。高可用集群是现代 IT 架构中确保服务连续性的核心手段,常结合如下技术构建:● 服务层高可用:Nginx、HAProxy + Keepalived。原创 2025-08-25 16:55:45 · 376 阅读 · 0 评论 -
高并发和高性能的区别和联系
特性高并发高性能目标多和快:单位时间内处理的任务数量要多快和省:处理单个任务花费的时间要少核心管理流量和资源,解决“挤”的问题优化执行路径,解决“慢”的问题好比如何让成千上万的普通游客高效通过公园如何让一个运动员用最短时间跑完赛道在实际项目中,两者必须协同考虑。一个优秀的系统通常是在高性能的基础上(每个请求都很快),通过高并发技术(线程池、异步、分布式等)来扩展其处理能力,从而既能快速响应单个用户,又能同时服务海量用户。原创 2025-08-25 16:36:11 · 649 阅读 · 0 评论 -
技术里常说 没有银弹
银弹”指的是一种。原创 2025-08-22 15:50:44 · 952 阅读 · 0 评论 -
Java系统三高设计
在 Java 构建的大型系统中,实现“三高”特性 —— 高可用(High Availability)、高并发(High Concurrency)、高性能/高负载(High Performance/Throughput) 是核心目标。数据库 主从复制 + 哨兵(Redis Sentinel)、MGR(MySQL Group Replication)部署 Docker + Kubernetes(CI/CD:Jenkins / GitLab CI)数据库优化 索引优化、分库分表(ShardingSphere)原创 2025-08-22 11:23:53 · 461 阅读 · 0 评论 -
Java 系统中实现高性能
在 Java 系统中实现高性能,需要从架构设计、编码实践、并发处理、缓存策略、I/O 优化等多个维度协同考虑。Java 高性能不是靠某一项技术,而是全链路协同优化,涵盖架构、编码、并发、缓存、数据库、I/O、监控等方面。原创 2025-08-22 10:24:13 · 1144 阅读 · 0 评论 -
TPS每秒事务数
TPS 是一个直接反映系统业务处理能力的黄金指标。它不同于衡量吞吐量的 QPS,而是更专注于“事务”这个完整的业务单元。评估系统性能时,必须结合 TPS、响应时间(RT) 和错误率一起看。单纯追求高 TPS 而牺牲了稳定性(高错误率)或用户体验(高延迟)是不可取的。优化 TPS 是一个系统工程,需要从数据库、应用代码、架构设计等多个层面进行分析和优化,其核心在于减少 I/O 等待、降低锁竞争、缩短响应路径。原创 2025-08-21 16:55:48 · 996 阅读 · 0 评论 -
实现几十亿运单数据的秒级响应
要实现几十亿运单数据的秒级响应,同时兼顾存储和删除性能,需要从架构设计、数据分片、缓存策略和查询优化等多个方面综合考虑。原创 2025-08-21 16:04:09 · 893 阅读 · 0 评论 -
百亿数据毫秒级返回
百亿级数据量下实现毫秒级返回 的 Java 系统,需要全栈式、多维度优化,百亿数据能在毫秒级返回,靠的是 缓存、分片、预处理、异步化、索引、架构分层 的协同设计,Java应用只是协调器,关键在数据分布和计算模型设计。原创 2025-08-21 15:58:19 · 400 阅读 · 0 评论 -
1000qps怎么保证系统的高可用
1000qps怎么保证系统的高可用(k8s)到消息隔离、限流、线程池怎么配置、缓存上面的优化要保证系统在 1000 QPS 的高并发场景下实现高可用,需要从 Kubernetes 部署架构、消息隔离、限流、线程池优化、缓存策略 等多个维度进行设计。原创 2025-08-21 15:29:22 · 728 阅读 · 0 评论 -
支撑百万级 QPS 的系统优化和故障处理经验总结
百万 QPS 背后不是“某个技术”,而是一整套架构优化体系 + 全链路容错机制 + 实战故障应对经验的积累。原创 2025-08-21 14:01:32 · 615 阅读 · 0 评论 -
100 用户并发下的 QPS(Queries Per Second)评估与优化
多实例部署,结合 Kubernetes/容器编排。:静态资源、公共接口前置 CDN,减少源站压力。,取决于场景(压测 vs 真实用户)。代替传统阻塞 IO,提升并发。假设每个请求平均耗时。原创 2025-08-21 11:39:59 · 639 阅读 · 0 评论 -
解决接口耗时长问题
通过热点数据预热、多级缓存、异步化编程等方式解决热门数据接口耗时长问题通过热点数据预热、多级缓存和异步编程,可以显著减少热门数据接口的响应时间,提升用户体验。原创 2025-08-21 11:06:50 · 432 阅读 · 0 评论 -
QPS 每秒查询数
全称是,即,是衡量系统性能的一个常用指标,尤其用于。QPS 表示系统在单位时间内能处理的请求数量:QPS = 每秒钟处理的请求数量一个 Web 接口平均每秒能处理,那它的 QPS 就是 1000。某电商秒杀活动,接口 QPS 峰值达到,意味着系统每秒能处理 5 万个请求。原创 2025-08-21 10:32:20 · 738 阅读 · 0 评论 -
服务端对接 HTTP 接口传输图片 采用base64还是 multipart/form-data
在服务端对接HTTP接口传输图片时,选择 multipart/form-data还是编码,需要根据具体场景权衡。原创 2025-07-24 13:51:06 · 1136 阅读 · 0 评论 -
CPU 密集型 和 I/O 密集型 任务
指主要耗费 CPU 资源进行计算的任务,CPU 不断运算、几乎不等待外部输入。指主要耗费等待外部资源(磁盘、网络、数据库)的任务,CPU 经常在等别人干活。CPU 密集型任务是“CPU 一直干活”,I/O 密集型任务是“CPU等别人干活”。原创 2025-07-22 11:15:03 · 571 阅读 · 0 评论 -
JVM调优分析工具和命令
是基于JAVA Management Extensions (JMX)的实时图形化监测工具,这个工具利用了内建到JVM里面的JMX指令来提供实时的性能和资源的监控,包括了JAVA程序的内存使用,堆和线程信息,类的分配状态和空间使用、检测死锁等;jvisualvm:JDK 自带的全能分析工具,可以分析:内存快照、线程快照、程序死锁、监控内存的变化、gc 变化等。,以便分析线程的状态和堆栈信息。profler:一个商业的vm分析工具,可以监视vm中的内存,线程,gc等信息,并提供一些高级功能如。原创 2024-08-13 14:12:52 · 1029 阅读 · 0 评论 -
JVM调优
JVM主要参数:堆设置、回收器选择(串行、并行、并发收集器)JVM 参数类型大致分为以下几类:标准参数(-),即在 JVM 的各个版本中基本不变的,相对比较稳定的参数,向后兼容;非标准参数(-X),变化比较小的参数,默认 JVM 实现这些参数的功能,但是并不保证所有 JVM 实现都满足,且不保证向后兼容;非Stable参数(-XX),此类参数各个 JVM 实现会有所不同,将来可能会随时取消,需要慎重使用;-Xmx3550m: 最大堆大小为3550m。原创 2024-08-12 16:16:40 · 1130 阅读 · 0 评论 -
Java性能调优
性能调优的策略Java 性能调优是一项综合性工作,需要从代码、JVM 配置、I/O、数据库、并发处理、缓存、部署等多个方面进行优化。通过合理的调优策略,可以显著提升应用的性能,确保系统在高负载下稳定、高效地运行。定期的性能监控和分析也同样重要,可以帮助快速定位和解决性能瓶颈问题。批量Java 性能调优是一项复杂且多层次的工作,涉及代码、JVM 配置、并发处理、内存管理等多个方面。原创 2024-08-12 13:51:15 · 1196 阅读 · 0 评论 -
常用Java代码优化
Java 代码优化是一项持续的工程,需要根据具体的项目需求和场景进行权衡。通过合理的代码结构、性能调优、内存管理、I/O 优化、多线程优化和数据库操作优化,可以显著提升 Java 应用的可维护性和运行效率。在优化过程中,始终要考虑代码的可读性和可维护性,避免过早优化和不必要的复杂化。综上所述,Java代码优化是一个综合性的工作,需要从多个方面入手。通过合理的代码设计、算法选择、资源利用以及JVM配置等手段,可以显著提升Java应用程序的性能表现。避免重复代码:重构和提取公共代码。原创 2024-08-12 11:21:30 · 1037 阅读 · 0 评论 -
Netty优化
netty 是一种异步的、基于事件驱动的网络框架,它在高性能和可伸缩性方面表现出色。适当调整 I/O 线程池大小:I/O 线程池的大小应该根据系统资源和需求来适当调整。如果设置太小,可能会导致线程饥饿或阻塞;如果设置太大,可能会浪费系统资源。使用 Direct ByteBuffers:使用 Direct ByteBuffers 可以避免将内存从 JVM 移动到操作系统内核空间的额外复制,从而提高效率。压缩数据传输:可以使用压缩算法(如 gzip、Snappy)来减少数据传输量,从而提高性能。原创 2024-03-13 17:49:30 · 1669 阅读 · 0 评论 -
sql优化
索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低insert 及 update的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。在流量比较大的场景中,可以增加从库来提高数据库的负载能力,从而提升数据库的总体性能。尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。原创 2024-04-19 16:55:20 · 1558 阅读 · 0 评论 -
Mysql优化
MYSQL优化主要分为以下四大方面:硬件及操作系统层面优化:设计:存储引擎,字段类型,范式与逆范式功能:索引,缓存,分区分表。架构:主从复制,读写分离,负载均衡。合理SQL。原创 2024-04-19 17:15:50 · 1147 阅读 · 0 评论 -
Java实现异步的原因、场景、实现异步的方式
有时某一个耗时很长的异步任务执行结束之后,你想利用它返回的结果再做进一步的运算,该运算也会是一个异步任务,两者之间的关系需要程序开发人员手动进行绑定赋予,Future并不能将其形成一个任务流(pipeline),每一个Future都是彼此之间都是孤立的,所以才有了后面的CompletableFuture,CompletableFuture就可以将多个Future串联起来形成任务流。响应式编程,其实就是对数据流的编程,而对流的处理对数据流的变化进行响应,是通过异步监听的方式来处理的。传送消息的链路称为信道。原创 2023-12-22 16:31:25 · 2918 阅读 · 1 评论
分享