Netflix 引入虚拟线程:性能和缺陷案例研究
创始人
2024-08-13 19:40:57
0

作者 | A N M Bazlur Rahman

译者 | 王强

策划 | 丁晓昀

Netflix 是 Java 的长期采用者,最近他们升级到了 Java 21。他们现在正在利用 JEP 439 中引入的分代 ZGC 和 JEP 444 中引入的虚拟线程等新特性来提升其庞大的微服务组合的性能。虽然为高吞吐量并发应用程序设计的虚拟线程在早期展示出了优势,但它们在现实场景中也带来了独特的挑战。

在 Netflix Tech Blog 上最近的一篇文章中,其 JVM 生态系统团队分享了他们使用虚拟线程的经验,特别是服务遇到超时和挂起实例的问题。该问题与虚拟线程和阻塞操作和 OS 线程可用性的交互有关,导致其基于 SpringBoot 的应用程序出现类似死锁的情况。

Netflix 工程师在运行 Java 21 并使用 SpringBoot 3 和嵌入式 Tomcat 的服务中观察到了间歇性超时和无响应实例。尽管 JVM 实例保持活动状态,但它们停止提供流量,其特点是卡在 closeWait状态的套接字显著增加。当远程端关闭 TCP 连接,但本地端尚未关闭其连接端,使套接字处于等待状态时,就会出现此状态。有关此问题的更多信息,请参阅术语部分的 RFC 793。

初步诊断表明虚拟线程与此问题有关,尽管它们并未出现在传统的线程转储中。团队使用 jcmd Thread.dump_to_file发现了数千个“空白”虚拟线程,表示这些线程已创建但尚未运行。问题追溯到 Tomcat 的请求处理,其中创建了新的虚拟线程,但由于操作系统线程不可用而无法安排。

#119821 ""virtual #119820 ""virtual #119823 ""virtual #120847 ""virtual #119822 ""virtual ...

分析显示,Tomcat 的虚拟线程执行器正在为每个请求创建线程,但这些线程因等待锁定而停滞。具体而言,由于同步块内的阻塞操作,线程被固定到 OS 线程,而 ForkJoinPool 中可用的 OS 线程数量有限,让情况更加恶化。

该问题源于 一个经典的死锁场景,其中虚拟线程无法继续,因为所需的锁被其他虚拟线程持有,这些虚拟线程被固定到所有可用的 OS 线程。这阻止了新的虚拟线程的调度,结果阻塞了应用程序。

为了解决该问题,Netflix 的 JVM 生态系统团队使用一个堆转储来检查锁的状态,并确认没有线程拥有它,但等待它的线程无法继续。这是一个本应解决的瞬态,但却导致了类似死锁的情况。

团队确定了根本原因,并开发了一个可重现的测试用例,以防止将来出现类似问题。虽然 Java 21 中的虚拟线程已显示出通过减少开销来提高性能的潜力,但此案例意味着了解它们与现有线程模型和锁定机制的交互方式是很重要的。

除了 Netflix 的发现之外,InfoQ 上最近的一项案例研究还深入探讨了虚拟线程的实际挑战和优势,特别是在涉及大量并发负载的场景中。这项研究强调了在将虚拟线程集成到生产系统中时需要仔细考虑和测试,因为即使是很小的架构细节也会导致严重的性能影响。

除了虚拟线程之外,Netflix 采用的分代 ZGC 也在优化其系统时发挥了关键作用,正如最近的一篇文章中提到的那样。ZGC 能够在堆大小增加时保持较低的暂停时间,通过减少垃圾收集开销和增强响应能力,显著提高了 Netflix 的应用程序性能。有关分代 ZGC 的更多信息,请参阅这篇 InfoQ 新闻。

Netflix 还有一个强大的警报系统,基于其 Atlas Streaming Eval 平台,对帮助他们识别和诊断这些问题是很重要的。该系统旨在改进实时监控和警报,使团队能够捕获处于问题状态的实例并提供关键数据进行追溯分析。

尽管面临各种挑战,Netflix 对虚拟线程的未来仍持乐观态度,并预计即将发布的 Java 版本将取得进一步改进,特别是在解决锁定原语的集成挑战方面。此案例研究对于性能工程师和开发人员在其应用程序中探索虚拟线程时是一个有价值的示例。

原文链接:

Netflix Adopts Virtual Threads: a Case Study on Performance and Pitfalls (https://www.infoq.com/news/2024/08/netflix-performance-case-study/)

剥离几百万行代码,复制核心算法去美国?TikTok 最新回应来了

AICon 上海日程确认,蔚来汽车李斌、面壁智能李大海等同台分享,为你呈现 50+ 大模型前沿实践

一季度完成去年全年目标后,得物宣布裁员5%并启动组织提效;让3人干5人的活?奇瑞回应;英特尔市值仅相当于OpenAI | Q资讯

95% 向量资源节省,火山引擎云搜索 RAG 技术体系演进

相关内容

热门资讯

原创 8... 不出意外,我们将在9月迎来高通与联发科的新一代旗舰SoC。但是,截至目前,在8月的Android性能...
净月项目成功入选国家高质量数据... 8月28日-8月31日,在贵阳举办的2025中国国际大数据产业博览会(数博会)上,国家数据局正式发布...
康尼机电公布“一种便携式体能评... 天眼查APP显示,近日,南京康尼机电股份有限公司申请的“一种便携式体能评估仪”专利公布。 摘要显示,...
天音控股:AI为引擎赋能新零售... 2025年三季度以来,手机市场再次迎来新品密集发布期,无论是折叠屏的形态探索,还是AI技术深度整合,...
卫星通信产业扩大开放 新合作与... 工业和信息化部《关于优化业务准入促进卫星通信产业发展的指导意见》(以下简称《指导意见》)近日发布。记...
百度昆仑芯高调出圈:对标寒武纪... 一向低调的昆仑芯,估值正被重新讨论。 中银国际在最新研报中提出,寒武纪(688256.SH)A股市值...
北方大数据交易中心入选国家试点... 央广网天津9月7日消息(记者张强)为不断提高标准技术指标的先进性、科学性和适用性,在国家数据局指导下...
原创 航... 在人类追寻星辰大海的漫长征程中,航天探索无疑是最壮阔也最令人振奋的篇章。从上世纪冷战时期美苏两大强国...
中国移动宁夏公司以AI大模型赋... 雨水频发之际,贺兰山下的防洪系统正以科技力量守护一方安澜——仅需15分钟,20个关键闸门便完成自动调...
人工智能免疫药物平台即将投用 (来源:天津日报) 转自:天津日报 本报讯(记者 陈璠)近日,位于天津综保智汇城、由天保基建公司与南...
世校赛首增人工智能赛道 来源:滚动播报 (来源:千龙网) 2025年世界职业院校技能大赛首次增设人工智能赛道。昨天(5日),...
国际混凝土博览会首次在穗举办!... 9月4日至7日,2025中国国际混凝土博览会在广州开幕。今年展会首次在穗举办,超高性能混凝土等绿色创...
刘烈宏赴重庆出席2025世界智... 人民财讯9月6日电,9月5日,2025世界智能产业博览会在重庆开幕。国家数据局党组书记、局长刘烈宏出...
只为记录更深邃的星海 (来源:光明日报) 转自:光明日报 张文博 绘 长春理工大学“深空通信与成像”团队。资料图片 ...
{全球首个!“灵息”大模型赋能... 在近日举行的第五届可持续发展大数据国际论坛上,一项突破性成果引发全球关注——可持续发展大数据国际研究...
AI时代,对著作权法的前瞻思考 8月28日,2025中国国际大数据产业博览会在贵州省贵阳市开幕。图为参会人员与一款机器人互动。新华社...
原创 除... 制造强势中国领跑,美国优势渐流失 要说中美在制造方面的变化,得从“中国制造2025”计划说起,这东...
盛视科技获得发明专利授权:“行... 证券之星消息,根据天眼查APP数据显示盛视科技(002990)新获得一项发明专利授权,专利名为“行李...
云遥宇航再添新星!天津港保税区... 北京时间2025年9月5日19时39分,我国在酒泉卫星发射中心用谷神星一号(遥十五)运载火箭,将天津...