12|高性能优化:单机Java极致优化
佘志东

你好,我是志东,欢迎和我一起从零打造秒杀系统。
今天这节课我们主要是聊一聊和 Java 相关的一些技术点的优化方向,包括 Tomcat、RPC 框架、JVM 以及 CDN 等。但在开始之前呢,我们先来说个基本知识点,那就是关于程序代码的两种运行模式,即 CPU 密集型与 IO 密集型。
CPU 密集型操作,顾名思义就是需要持续依赖 CPU 资源来执行的操作,比如各种逻辑计算、解析、判断等等。在这种情况下,我们的优化方向是尽可能地利用多核 CPU 资源,并且避免让 CPU 做无效的切换,因为 CPU 已经在不停地工作了,谁来干都一样,同时切换 CPU 还浪费资源。所以这个时候,我们最好让任务线程数和 CPU 核数保持一致,从而最大限度地利用 CPU 资源。
和 CPU 密集型操作相对的,就是 IO 密集型操作了,比如磁盘 IO 或者网络 IO,这个过程操作系统会挂起任务线程,让出 CPU 资源。此时如果任务线程较少,同时 IO 时间相对较长,那可能会出现所有线程都被挂起,然后 CPU 资源都在闲着的情况,所以此时我们需要适当地增加任务线程数量,来提高吞吐量,同时将 CPU 资源利用起来。
那为什么要说这个呢?因为这是做程序优化的基本原则。通过前面课程的学习,我们知道,秒杀系统里有提供两种类型的服务,一个是 Web 服务,一个是 RPC 服务,前者一般提供 HTTP 接口,后者提供 RPC 接口。当然这两种服务我们一般都是通过 Tomcat 来启动发布,但它们两者之间还是有些不同的。Web 服务接受和处理请求走的是 Tomcat 那套线程模型,而 RPC 服务则是根据选择的 RPC 框架的不同而有所变化,所以这节课我们首先来了解一下 Tomcat 相关的知识。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结

本文深入探讨了单机Java极致优化的相关技术要点,包括CPU密集型与IO密集型操作的优化方向,Tomcat的NIO线程模型工作原理及优化配置,以及RPC框架中Netty的服务端线程模型和Dubbo的相关配置。文章强调了针对不同类型操作的优化策略,以及如何通过调整Tomcat和RPC框架的配置来提高系统的吞吐量和性能。此外,还介绍了Servlet的异步和非阻塞支持,以及静态资源相关的优化。在JVM方面,文章重点讨论了垃圾回收器的选择和优化配置。总的来说,本文为读者提供了深入了解Java性能优化的基本原则和具体优化方向的重要知识。文章内容丰富,涵盖了多个方面的优化技术,对于想要深入了解Java性能优化的读者来说,是一份极具价值的资料。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你搭建秒杀系统》,新⼈⾸单¥59
《手把手带你搭建秒杀系统》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- 清风可以部署两个服务,将http服务和RPC服务分开,http服务使用独立的域名对外服务,Rpc使用独立的group对外服务
作者回复: 您的理解是正确的,如果条件允许,这样做是比较合适的。
2021-10-2610 - 胡桐祥JVM 内存模型那里标错了,-Xms应该是堆区的初始化内存吧,不是最小内存,2024-01-09归属地:广东1
收起评论