50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

在 Twitter,Netty 4 GC 开销降为五分之一

  • 2013-11-12
  • 本文字数:1966 字

    阅读完需:约 6 分钟

Netty 项目在 7 月份发布了 Netty 4 的第一个版本,其性能的显著提升主要来源于垃圾收集开销的降低。在 Twitter,Netty 4 经过完善已经获得了 5 倍的性能提升,但也有一些代价。

Netty 项目创始人和 Twitter 软件工程师 Trustin Lee 从 2003 年开始就一直编写网络应用程序框架。Netty 第一次公开发布是在 2004 年 6 月,其项目主页这样描述它,“一种异步事件驱动的网络应用程序框架,用于可维护的高性能协议服务器和客户端的快速开发。”

Lee 在博文“ Netty 4 在 Twitter:降低 GC 开销”中写道,Twitter 在许多地方使用 Netty 实现联网功能:

Netty 包含一个反应堆模式的实现,它同时也是 Play 框架的核心。Play、Grails 和许多其它 Web 框架都采用一种 WAR-less Web 应用程序模式,它允许与底层 HTTP 服务器更紧密地集成。使用内部包含像 Netty 这种框架的服务器,异步编程会简单很多。异步编程和非阻塞 I/O 是“响应宣言( The Reactive Manifesto )”的核心。InfoQ 在“新兴趋势:响应式编程”中报道了这一新兴模式。

Netty 3 使用 Java 对象表示 I/O 事件。Lee 谈道:

这样简单,但会产生大量的垃圾,尤其是在我们这样的规模下。Netty 4 在新版本中对此做出了更改,取代生存周期短的事件对象,而以定义在生存周期长的通道对象上的方法处理 I/O 事件。它还有一个使用池的专用缓冲区分配器。

……每当收到新信息或者用户发送信息到远程端,Netty 3 均会创建一个新的堆缓冲区。这意味着,对应每一个新的缓冲区,都会有一个‘new byte[capacity]’。这些缓冲区会导致 GC 压力,并消耗内存带宽:为了安全起见,新的字节数组分配时会用零填充,这会消耗内存带宽。然而,用零填充的数组很可能会再次用实际的数据填充,这又会消耗同样的内存带宽。如果 Java 虚拟机(JVM)提供了创建新字节数组而又无需用零填充的方式,那么我们本来就可以将内存带宽消耗减少 50%,但是目前没有那样一种方式。

在 Netty 4 中,代码定义了粒度更细的 API,用来处理不同的事件类型,而不是创建事件对象。它还实现了一个新缓冲池,那是一个纯 Java 版本的 jemalloc (Facebook 也在用)。现在,Netty 不会再因为用零填充缓冲区而浪费内存带宽了。不过,由于它不依赖于 GC,开发人员需要小心内存泄漏。如果忘记在处理程序中释放缓冲区,那么内存使用率会无限地增长。

这些变化没有向后兼容 Netty 3,但其垃圾生成速度是原来的 1/5,而垃圾清理速度快了 5 倍。

Lee 写道:

我们比较了两个分别建立在 Netty 3 和 4 基础上 echo 协议服务器。(Echo 非常简单,这样,任何垃圾的产生都是 Netty 的原因,而不是协议的原因)。我使它们服务于相同的分布式 echo 协议客户端,来自这些客户端的 16384 个并发连接重复发送 256 字节的随机负载,几乎使千兆以太网饱和。

根据测试结果,Netty 4:

  • GC 中断频率是原来的 1/5:45.5 vs. 9.2 次 / 分钟
  • 垃圾生成速度是原来的 1/5:207.11 vs 41.81 MiB/ 秒

Lee 提到,在 Twitter 中采用 Netty 4 还有一些障碍,那就是缓冲区泄漏和核心复杂。该项目希望增加更多功能,包括 HTTP/2、异步 DNS 解析以及客户端 HTTP 和 SOCKS 代理支持。

Yahoo 工程部门有一篇类似的文章,内容是关于 Netty 如何帮助他们成倍地提升 Storm 集群的速度。在名为“ Netty 让 Storm 飞速运行”的文章中,Bobby Evans 写道:

在雅虎,我们都是用自己的产品进行开发。在将 Netty 作为 Storm 集群的默认消息层之前,我需要一些数据来确认,它与当前的默认消息层 zeromq 相比怎么样。要做到这一点,我需要一个能够使 Storm 消息层达到极限的基准测试程序,因此,我写了一个。那是一个简单的高速测试,用于确认 Storm 在不同的 Bolt 和 Spout 之间推送消息有多快。它允许同时启动多个具有不同复杂度的 Topology 来发送定长消息。

Evans 指出,在小规模测试中(没有资源冲突),Netty 比 zeromq 更快(40-100%)。在大规模测试中,它也遇到了性能问题,但减少了解决问题的线程数。

对于大量短消息而言,Netty 的默认设置并不是很好,即使该节点上只有它自己在运行。但是,当把它限制在单线程上,我们每秒能够获得比 zeromq 多 85% 到 111% 的消息,之后网络再次饱和。

Evans 指出,Netty 现在是 Yahoo Storm 集群的默认消息层。

Netty 4 的改进对许多开源项目都大有益处。该框架有一个长长的相关项目列表,包括 Akka Apache James HornetQ Vert.x ,这里仅举这几例。要了解更多关于 Netty 4 的信息,请查看 netty.io Lee 的博文

查看英文原文: Netty 4 Reduces GC Overhead by 5x at Twitter

2013-11-12 07:408500
用户头像

发布了 256 篇内容, 共 99.4 次阅读, 收获喜欢 12 次。

关注

评论

发布
暂无评论
发现更多内容

2025可信数据库发展大会召开,天翼云TeleDB领航核心系统创新实践!

天翼云开发者社区

数据库

【直播预约】天翼云如何通过 DolphinScheduler 实现大数据自动化与全链路血缘,探索实践亮点!

白鲸开源

大数据 技术分享 Apache DolphinScheduler 天翼云 血缘关系

AWS高级解决方案架构师黄海波:GenAI 时代非结构化数据处理的实践与趋势洞察

数新网络官方账号

全球AI大模型综合排名(Top 20)

测吧(北京)科技有限公司

人工智能 软件测试 测试开发

10分钟无痛部署!字节Coze开源版喂饭教程

测试人

如何安装DashVector向量检索服务SDK

DashVector

数据库 大数据 AI 大模型

基于深度学习的YOLO框架实现金属工业表面缺陷识别|开箱即用系统级项目(源码+模型+界面)

程序员Geek

人工智能

高效掌控全局,安全运筹帷幄:鸿蒙电脑大屏理财,商务精英必备!

最新动态

重塑AI算力底座!阿里云服务器操作系统V4正式发布

新消费日报

中烟创新自研【烟草专卖执法案卷评查系统】入选“北京市人工智能赋能行业发展典型案例”

中烟创新

昇腾算力赋能视频生成革命 浙江大学团队攻克长时一致性难题

极客天地

突破上下文限制!8大AI记忆优化策略全解析

聚客AI学院

人工智能 agent LLM 大模型落地 AI 智能体

智能汽车,不只是造出来的,更是“拟”出来的

DevOps和数字孪生

智能汽车 数字样机

重复文件查找工具:DataSecurity Plus 全面提升企业文件管理效率

运维有小邓

重复文件查找工具

研发效能的下一站:AI是否会让你“无事可做”?

思码逸研发效能

研发效能 效能度量 效能管理 智能编程 思码逸

社交媒体上舆情监测的“微爆点”:如何识别和干预?

沃观Wovision

舆情监测 海外舆情监控 沃观Wovision 舆情监测系统

AI 赋能的故障排除:技术趋势与实践

不在线第一只蜗牛

人工智能

WAIC 2025重磅!天翼云发布算网一体服务!

天翼云开发者社区

人工智能

手把手玩转本地大模型:Ollama+DeepSeek+Dify 零门槛全流程指南

测试人

软件测试

汽车线束行业AI智能化MES解决方案:推动智能制造与质量升级

万界星空科技

mes 汽车线束行业 汽车线束mes 制造业转型 智能化MES

黑客正积极利用PaperCut旧漏洞

qife122

网络安全 PaperCut

超强组合!Dify+Milvus构建生产级RAG系统的终极指南

阿里云大数据AI技术

人工智能 云计算 大数据 Milvus dify

暑期高效出行用鸿蒙5,华为钱包畅行无忧卡一碰就过闸、小艺问答智能规划行程

最新动态

孙宇晨的而立之年:争议未远,传奇已立

极客天地

智能化测试基础架构

测吧(北京)科技有限公司

人工智能 软件测试 测试开发 agent

跟复旦硕士聊了1小时,没想到这些基础题他居然也栽了

王中阳Go

Go 后端 模拟面试

多分支注意力机制提升表格数据建模效果

qife122

机器学习 表格数据

全球首发!网易灵动推出“灵掘”具身智能模型,展示中国工程机械智能化硬核实力

网易伏羲

智慧矿山 网易伏羲 网易灵动 工程机械智能化 工程机器人

慢查询日志在性能优化中的价值

电子尖叫食人鱼

性能优化

Coze开源本地部署教程

测吧(北京)科技有限公司

人工智能 软件测试 测试开发 Coze开源

稳居第一,实至名归!

天翼云开发者社区

云服务

在Twitter,Netty 4 GC开销降为五分之一_Java_Matt Raible_InfoQ精选文章