千亿级、大规模:腾讯超大 Apache Pulsar 集群的浏览器性能调优实践
发布时间:2025年09月18日 12:18
Pulsar-io 调用湖内移开的现像,一般为就会话编码 bug 随之而来,现阶段检视过的有:
大多并发情节显现出的死锁; 异步编程语言 Future 小规模性支系未检视终结等。除了应用程序自身的 bug 之外,固定式也确实引来调用湖内移开。如果 Pulsar-io 调用湖内的调用长三短时间处于列车运行完全,在微电脑 CPU 海洋资源够大的上述完全,可以通过变不够 broker.conf 里面的 numioThreads 参数来修正 Pulsar-io 调用湖内里面的指导工作调用相加,来提低应用程序的并行检视性能。
未收意: Pulsar-io 调用湖内繁忙,本身并不就会随之而来弊口。但是,Broker 口有一个后台调用,就会短时间段的判引每一个 Channel(联接)有无法在阈值短时间内接获就会话的请求资讯。如果无法接获,Broker 就会主动的暂停这个联接(相反,就会话 SDK 里面也有类似的形式简化)。因此,当 Pulsar-io 调用湖内被移开或者检视比较慢的时候,就会话就会再次成现剧烈的引连 - 重联的现像。
解成 3:Ledger 转换成历时过于短三
Ledger 作为 Pulsar 单个两区假消息的一个形式简化该组织单位,每个 Ledger 下纸制含一定大小和数量的 Entry,而每个 Entry 下就会留存至极少一条假消息( batch 参数掀开后,确实是多条)。每个 Ledger 在满足一定的有条件时,如纸制含的 Entry 数量、总的假消息大小、活过的短时间三个维度里面的任何一个超过固定式限制,都就会诱发 Ledger 的转换成。
Ledger 转换成短时间历时比较长三的现像如下:
当 Ledger 发生转换成时,Broker 口另行调拨到或还未检视完的假消息就会放到 appendingQueue 链表里面,当另行的 Ledger 创建顺利完成后,就会之后检视这个链表里面的数据集,保证假消息不丢失。
因此,当 Ledger 转换成操作过程比较比较慢上就会随之而来假消息生产厂的历时比较长三甚至提前终结。这个情节下,一般须要未收意下 ZooKeeper 的性能,查处下 ZooKeeper 所在微电脑的性能和 ZooKeeper 程序在的 GC 状况。
解成 4:BookKeeper-io 单调用历时过于短三
现阶段 Pulsar 炮兵部队里面,BookKeeper 的正式版要比起比较牢固,一般通过修正适当的就会话调用相加、留存数据集时的 E、QW、QA 等参数可以达到预期的性能。
如果通过 Broker 的 jstack 资讯发现 BookKeeper 就会话的 Bookkeeper-io 调用湖内比较繁忙时或调用湖内里面的单个调用比较繁忙时,首先要查处 ZooKeeper、Bookie 程序在的 Full GC 上述情况。如果无法弊口,可以考虑修正 Bookkeeper-io 调用湖内的调用相加和 Topic 的两区数。
解成 5:Debug 管理人员别存档因素
在存档管理人员别下,因素生产厂历时的情节一般再次成现在 Java 就会话。如就会话销售业务引入的是 Log4j,用于的是 Log4j 的存档输成分析方法,同时掀开了 Debug 管理人员别的存档则就会对 Pulsar Client SDK 的性能有一定的因素。劝告用于 Pulsar Java 应用程序引入 Log4j 或 Log4j + SLF4J 的分析方法输成存档。同时,针对 Pulsar 纸制修正存档管理人员别至极少到 INFO 或 ERROR 管理人员别。在比较夸张的上述完全,Debug 存档因素生产厂历时的调用能将生产厂历时拉长三到秒管理人员别,修正后增低到正常人素质(毫秒级)。具揭示像如下:
在假消息量引人未收意大的情节下,就会话的 Pulsar 炮兵部队须要暂停 Broker、Bookie 口的 Debug 管理人员别的存档纸张(劝告初步建筑设计环境),直接将存档修正至 INFO 或 ERROR 管理人员别。
解成 6:Topic 两区隔布过多
Pulsar 就会在每个 Namespace 管理人员别固定式 bundles ,配置文件 4 个,如下三幅附未收。每个 bundle range 范围就会与一个 Broker 关联,而每个 Topic 的每个两区就会经过 hash 浮点,落到相异的 Broker 完成生产厂和增值。当过多的 Topic 两区落入到完全相同的 Broker 请注意,就会随之而来这个 Broker 请注意的阻抗过低,因素假消息的生产厂和增值灵活性。
Data 工程项目在开始布署的时候,每个 Topic 的两区数和每个 Namespace 的 bundle 数都比较极少。通过修正 Topic 的两区相加和 bundle 的分割相加,使得 Topic 的两区在 Broker 请注意达到逐步基本分布的目地。
在 bundle 的动态分割和 Topic 的分布修正上,Pulsar 还是有很大的改善空间,须要在 bundle 的分割迭代(现阶段全力支持 range_equally_divide 、 topic_count_equally_divide ,配置文件现阶段全力支持 range_equally_divide ,劝告用于 topic_count_equally_divide )、Topic 两区的分布层面,在保证子系统牢固、阻抗基本的上述完全好好实质性的改善。
调优二:就会话剧烈引开与重连
就会话引连 / 重连的状况有很多,紧密结合网易 Data 工程项目情节,我们阐述成就会话 SDK 随之而来引连的主要有如下几个状况,主要纸制括:
就会话提前终结引连 - 重连有助于 Go SDK 的小规模性检视 Go SDK 生产厂者 sequence id 检视 顾客大量、剧烈的创建和清空请注意依次为大家解成这些弊口的状况与解决设计方案。
解成 1:就会话提前终结引连 - 重连有助于
Pulsar 就会话 SDK 记事与 Broker 口类似形式简化(可概要 # 解成 2 大多内容),短时间段判引是否是在阈值的短时间内接获就会话的数据集,如果无法接获则就会引开联接。
这种现像,排除就会话弊口的前提下,一般弊口再次成现在就会话的微电脑海洋资源比较极少,且用于率比较低的上述情况,随之而来应用应用程序无法够大的 CPU 能力检视就会话的数据集。此种上述情况,可以修正就会话的销售业务形式简化或布署分析方法,完成规避检视。
解成 2:Go SDK 的小规模性检视
Pulsar 邻里提专供多语言学的就会话的并行能力,如全力支持 Java、Go、C++、Python 等。但是除了 Java 和 Go 语言学就会话之外,其他的语言学发挥作用比起要弱一些。Go 语言学的 SDK 比起于 Java 语言学 SDK 还有很多区域内须要完善和细简化,比方说在完全一致内容检视上与 Java 语言学 SDK 比起还过分细腻。
如接获就会话的小规模性时,Java SDK 并不须要区隔哪些小规模性须要清空联接重连、哪些小规模性不用清空联接(如 ServerError_TooManyRequests ),但 Go 就会话就会直接清空 Channel ,重另行创建。
解成 3:Go SDK 生产厂者 Sequence id 检视
发送到假消息后,低正式版的 Go SDK 生产厂者就会接获 Broker 的响应。如果响应假消息里面的 sequenceID 与本口维护的链表头部的 sequenceID 不相等上就会直接引开联接——这在大多情节下,就会随之而来误引,须要区隔小于和成比例等于两种情节。
这里描述的情节和解成 1- 就会话提前终结里面的大多小规模性情节,早已在低正式版 Go SDK 里面好好了细简化和检视,劝告大家在配上 Go SDK 时尽量配上另行的正式版用于。现阶段,Pulsar Go SDK 也在快速的迭代里面,欢迎很感兴趣的同学三人参与和贡献。
解成 4:顾客大量且剧烈地创建和清空
炮兵部队运维操作过程里面在不够另行 Topic 的两区数后,顾客就会大量且剧烈地创建和清空。针对这个情节,我们已查处到是 SDK bug 随之而来,该弊口就会在 Java 2.6.2 正式版再次成现。运维期间,顾客与 Broker 口早已建立了牢固的联接;运维操作过程里面,因销售业务假消息量的增长速度三需求,须要修正 Topic 的两区数。就会话在不须要中止的前提下,听觉到了就会话的修正,开始创建另行增两区的顾客,这是因为检视形式简化的 bug,就会随之而来就会话大量且剧烈地连续不引创建顾客。如果你也察觉到类似弊口,劝告替换 Java 就会话的正式版。
除了请注意的引连 - 重连情节之外,在我们网易 Data 工程项目地就会话还察觉到过 Pod 剧烈中止的弊口。经过查处和分析分析方法,我们确定是就会话再次成现小规模性时,跳成 Panic 误解随之而来。劝告在销售业务发挥作用时,要考虑子系统性的容错情节,在发挥作用形式简化层面完成一定程度的规避。
调优三:替换 ZooKeeper
由于我们网易 Data 工程项目里面用于的 Pulsar 炮兵部队假消息量比较大,微电脑的阻抗也比起较低。涉及到 ZooKeeper,我们开始用于的是 ZooKeeper 3.4.6 正式版。在日常运维操作过程里面,整个炮兵部队多次诱发 ZooKeeper 的一个 bug,现像如下截三幅附未收:
当前,ZooKeeper 工程项目早已修复该 Bug,很感兴趣的小伙伴可以首页该联接核对详情: 。因此,在 Pulsar 炮兵部队布署的时候劝告打上适当的补丁或替换 ZooKeeper 正式版。在网易 Data 工程项目里面,我们则是考虑将 ZooKeeper 正式版替换到 3.6.3 完成了相异检视。
4小结:Pulsar 炮兵部队运维查处指南
不尽相同的销售业务有不尽相同的情节和要求,并行和运维 Apache Pulsar 炮兵部队时察觉到的弊口,确实也不过于一样,但我们还是能从弊口查处角度多方面好好个梳理,以便找成适当自然现象改善灵活性。
针对 Apache Pulsar 炮兵部队运维操作过程里面察觉到的弊口,如生产厂历时长三、生产厂提前终结(timeout)、假消息推送到比较慢、增值堆积等,如果存档里面无法什么相对来说的或引人注目地小规模性(Exception)、误解(Error) 之类的资讯时,可以从如下几个多方面完成查处:
炮兵部队海洋资源固定式及用于现状 就会话增值状况 假消息验证资讯 调用完全 存档分析分析方法请注意针对每个多方面好好个简要指明。
1. 炮兵部队海洋资源固定式及用于现状
首先,须要查处程序在的海洋资源固定式是否是并不须要满足当前子系统阻抗状况。可以通过 Pulsar 炮兵部队管控仪表盘游戏平台核对 Broker、Bookie、ZooKeeper 的 CPU、内存及闪存 IO 的完全。
其次,核对 Java 程序在的 GC 上述情况(引人未收意是 Full GC 上述情况),检视 Full GC 剧烈的程序在。如果是海洋资源固定式多方面的弊口,须要炮兵部队管理人员或者运维人员修正炮兵部队的海洋资源固定式。
2. 就会话增值状况
可以查处增值能力不足引来的反压(背压)。再次成现背压的现像一般是发挥作用顾客程序在,但是收不到假消息或缓比较慢接获假消息。
3. 假消息验证资讯
如果炮兵部队生产厂历时比较长三或生产厂历时毛刺比较多,除了子系统海洋资源固定式多方面查处之外,还须要核对是否是有过大的假消息验证资讯。
假消息验证资讯的留存操作过程与假消息的留存操作过程是一样的,过大的验证资讯如果剧烈下发驱动器,则就会对炮兵部队驱动器造成阻碍,进而因素假消息的生产厂历时。
4. 调用完全
如果经过请注意的步骤,弊口还无法分析分析方法清楚,则须要再查处下 Broker 口的调用完全,主要未收意 pulsar-io 、 bookkeeper-io 、 bookkeeper-ml-workers-OrderedExecutor 调用湖内的完全,核对是否是有调用湖内海洋资源过分或者调用湖内里面某个调用被长三期占用。
可以用于 top -p PID(完全一致 pid) H 指令,核对当前 CPU 占用比较大的调用,紧密结合 jstack 资讯找成完全一致的调用。
5. 存档分析分析方法
如果经过请注意所述步骤仍然无法验证弊口比如说,就须要实质性核对存档,找成含有引人注目地资讯,并紧密结合就会话、Broker 和 Bookie 的存档及销售业务的用于表现形式、弊口再次成现时的情节、最近的操作等完成综合分析分析方法。
5回顾与计划
当然,我们对 Pulsar 炮兵部队的调优不就会暂停,也就会之后深入并参与邻里工程项目资源共享。
由于单个 Topic 相异的就会话比较多,每个就会话所在的 Pod、Client 内部就会针对每个 Topic 创建大量的生产厂者和顾客。由此就对 Pulsar SDK 在引连、重连、生产厂等完全一致内容的检视多方面的要求比较低,对各种完全一致内容检视流过程都就会比较的敏感。SDK 内部检视比较粗糙的区域内就会随之而来周边地区的重连,进而因素生产厂和增值。现阶段,Pulsar Go SDK 在很多完全一致内容多方面检视过分细腻,与 Pulsar Java SDK 的检视有很多不一样的区域内,须要小规模可用性和完善。网易 TEG 数据集游戏平台 MQ 一个团队也在积极参与到邻里,与邻里资源共享逐步完善 Go SDK 正式版。
另之外,针对网易 Data 工程项目地特大规模和销售业务表现形式,Broker 口须要检视大量的软件纸制集资讯,后续 Broker 自身的固定式仍须要好好大多的固定式和小规模修正。同时,我们除了扩容微电脑海洋资源之外,还计划在 Apache Pulsar 的习 / 撰写调用数、Entry 缓存大小、Bookie 习 / 撰写 Cache 固定式、Bookie 习撰写调用数等固定式多方面好好实质性的调优检视。
关于作者
鲍明宇,网易低级软件工程师,现阶段退职于网易 TEG 数据集游戏平台部,督导 Apache Pulsar、Apache Inlong、DB 数据集采集等工程项目地整合指导工作。现阶段专未收于大数据集课题,假消息里面间件、大数据集数据集并行等方向,拥有 10 年 Java 子系统性整合知识。
张大伟,网易低级软件工程师,Apache Pulsar Committer,现阶段退职于网易 TEG 数据集游戏平台部,主要督导 Apache Pulsar 工程项目子系统性指导工作。现阶段专未收于 MQ 和数据集可视检视等课题,拥有 6 年大数据集游戏平台子系统性整合知识。
关于Apache Pulsar
云原生时代假消息链表和流过融汇子系统,提专供为统一的增值模型,全力支持假消息链表和流过两种情节,既能为链表情节提专供该软件习撰写公共服务质量和强一致性基本权利,又能为流过情节提专供低吞吐、低延迟;使用驱动器数值分离成来架构,全力支持大炮兵部队、多租户、百万级 Topic、跨地域数据集复制、持久简化驱动器、最上层驱动器、低可扩展性等该软件和金融级功能。
GitHub 地址:
GitLab 系统设计自动装弹机为何如此不尽相同:坚持用恰恰 Web 框架十多年、坚决不用微公共服务
首个跑完科创垫的国产数据集库:78 岁老教授打磨四十年,每四人编码都自主可控
为什么 Rust 是初创公司的绝佳考虑?
达梦跑完国产数据集库第一个 IPO;伏特自动驾驶其他部门裁员约 200 人;微信推成三幅片霍金功能|Q 资讯
活动引荐
《系统建筑设计一物融汇群智数值》子系统简化地阐明另行一代“群智听觉数值”涵义,并匠造成一把掀开“系统建筑设计一物融汇群智数值”另行世界大门的钥匙。本书既可以作为译著,为一物联网、人工人工智能、工业因特网、智慧城市、人工智能制造等课题的科研人员和 IT 专业人士提专供创另行的其发展着重及子系统性理论模型、分析方法与系统设计支撑,也可以作为低年级研究生或研究生的概要讲义。
首页顶部链接参与抽奖,我们将抽取 5 名 InfoQ 的粉丝朋友们分别送到成一本《系统建筑设计一物融汇群智数值》,要自已了解不够多有关万一物人工智能因特网的子系统性戏谑,就来习一习吧! 让我们三人进入到系统建筑设计一物三元融汇的万一物人工智能互联时代吧!
点个在看极少个 bug👇
。上海妇科医院哪家更好厦门白癜风治疗费用多少钱
山东妇科医院哪家看的好
天津看白癜风去哪里
贵州生殖感染医院专家预约挂号
妇产科
老年病内科
嘴唇长痘
胃药
下火的食物
- 人际交往两个“潜规则”,要牢记,你的人缘但会越来越好
- 演员孙俪:大女主;也之外的世界
- 超额完成年度目标 大唐合资公司控股2021年实现合约销售额505.8亿元
- 重磅功能调整!降金球员仍可突破传奇!国服升级后首批精选简析
- 河南省郑州市公务员、事业编待遇怎么样看完了这篇文章你就知道了
- 时代中国去年履约销售额近956亿元
- 被经纪人曝出黑料,差点断送娱乐界前途,赵丽颖到底做错了啥?
- 往届生吃饭上“皇粮”的好机会,两年期满即入编,待遇不输公务员
- 妲己曾发明了一好像,纣王用了每天少不了她,我们至今都在用
- 中原广陵:2021年全年在管项目合约销售402.75亿元 同比增长17.4%
- 腾讯大神绒毛星云离世,年轻人深陷抑郁症囹圄
- 撕破脸钱都切勿了?这波不得不站她!
- 建业地产去年合同销售额601.05亿,同比减少;也一成
- 公元663年,唐太宗为何把妹妹以皇后礼下葬?谜团揭开:实在不光彩