存储账单最先发出警告的那个月,团队做的第一件事是把采样率从较高的比例往下调。数字很快见效,写入量降下来了,保留期也从紧张重新变得宽裕,看板上那条曲线终于不再往上爬。真正的转折发生在之后的一次故障:用户报障的那次请求,在追踪系统里查不到任何记录,它没有被采样命中。复盘会上争论的焦点从"哪个服务慢"变成了"我们为什么看不到",而后一个问题当场没有答案。省下来的那部分存储成本,在那一夜变成了排障时缺失的证据。
采样率之所以难定,是因为它不是一个有标准答案的参数。同一个系统里,不同角色想从追踪数据里拿到的东西并不一样:有人看趋势,有人要还原一次具体请求,有人要解释为什么慢请求集中在某几分钟,还有人要拿它去对账。这四类问题对数据的要求完全不同,而采样率这个旋钮只能一次性作用于全部数据。所以在讨论"降到多少"之前,必须先回答"我们要用它回答什么"。
错误率是不是升高了、平均耗时是不是漂移了、某个分位值这一周比上一周高了多少、某个接口的调用量曲线是什么形状——这些是聚合问题。计数器、直方图、分位数摘要这类指标结构天生就是为聚合问题设计的,它们在采集端就完成了汇总,不需要把每一条请求的细节都留下来。用追踪数据去回答趋势问题,相当于把一份逐条明细存下来,却只用来求平均值,成本效率很低。更麻烦的是,采样之后的趋势本身会失真:低采样率下,基于样本算出来的分位数抖动会明显变大,看板上的毛刺可能只是抽样噪声,而不是系统真的波动。
"这个订单为什么失败""这笔支付卡在哪一步""这个用户刚才的请求到底走了哪条分支"——这类问题要求把一个请求经过的所有服务、所有远程调用、所有耗时段按因果关系串起来。它的前提是完整:任何一个环节的片段缺失,链条就断了,归因只能做到"某个服务之后不知道发生了什么"。而完整性与采样率的关系是乘法关系,链路越长、跨的服务越多,整条链路被完整保留的概率越低。这也是为什么长链路系统对采样的敏感度远高于短链路系统——同样是每条片段按同一比例保留,十个片段的链路和三个片段的链路,完整保留下来的概率完全不是一个量级。
真正让人头疼的往往不是平均值,而是尾部:为什么有一小部分请求慢得离谱、它们集中在哪个服务、是不是和某个参数组合相关。尾部问题的特点是它在总量里占比极低,但恰恰是这些样本携带了最多的诊断信息。要解释尾部,你需要的不是"有样本",而是"有足够的样本"——一条两条只能证明它存在,几十条才能看出它有没有共同特征。而采样对尾部的杀伤是最直接的:尾部样本在总量里本来就少,按概率再抽一遍,剩下的数量会低到无法支撑任何归纳。这类问题决定了采样率的下限,而不是平均耗时决定。
有一类用途从一开始就不应该走采样:需要逐条追溯、需要作为凭据、需要对账的场景。按次计费的调用量核对、安全事件的取证回溯、合规要求的访问留痕、结算争议的仲裁依据——这些都要求"凡是发生过的都能查到",任何概率性的丢弃都会让证据链不完整。把采样后的数据用作计费依据是危险的,因为它会把对账误差从"系统问题"变成"商业纠纷"。这类数据应当从采样体系中独立出来,走单独的留存通道,而不是试图把采样率调到足够高来覆盖它。
很多团队对降采样的直觉是"数据少了一半,但形状没变"。这个直觉在样本量极大的时候勉强成立,一旦你要看的东西在总量里占比很低,它就会失效。理解这一点,是判断采样率能不能降的前提。
等比采样通常是每条链路独立地以某个概率被判定保留,而不是隔一条取一条。这意味着两件事:第一,保留下来的总量只在期望意义上等于总量乘以采样率,实际上下波动是常态;第二,被丢掉的是一个个具体的样本,而不是每个字段的一半信息。换句话说,你不是得到了一份"分辨率更低的全景图",而是得到了一份"完整但缺页的档案"。缺的是哪些页,完全由概率决定,与这一页重不重要无关。这正是问题的根源:采样机制不知道哪条链路重要。
设某类异常在全部请求中的占比为 p,采样率为 r,那么被保留下来的异常样本数量的期望等于总请求数乘以 p 再乘以 r。因为 p 本身很小,两个小数相乘之后的结果会非常小——小到实际结果经常是零。而正常请求的占比接近百分之百,即使采样率压得很低,仍然会留下大量样本。于是出现一个很有代表性的现象:看板上曲线照常刷新、均值照常平稳、样本量看起来也够用,但当你真的想找那次出错的请求时,它不在里面。采样并没有让数据"变少一半",它让稀有的那部分先消失了。这也是为什么等比采样在实践中总是先牺牲掉最需要看的样本:越稀有越重要,越稀有越难被命中。
评估采样率是否够用,需要区分两个层次。第一个层次是"能否观测到某类现象存在":这只需要命中一条样本,对样本量要求最低,但它只能证明存在,无法说明普遍程度。第二个层次是"能否对这类现象做定量描述":比如它占比多少、它是不是在增长、它和某个变量是否相关,这需要足够的样本量支撑统计稳定性,粗略地说,置信区间的宽度与样本量的平方根成反比,样本量减少到原来的四分之一,区间宽度大约翻倍。很多团队把采样后的分位数当成可靠指标在用,本质上是把第一层次的数据当成了第二层次的结论。当你要回答的是定量问题时,采样率的下限必须由统计稳定性倒推,而不是由存储预算倒推。
采样可以在链路数据的不同阶段做决定:在入口处就决定、等一条链路的片段收集完整之后再决定、或者干脆跟随上游已经做过的决定。三种时机没有优劣之分,只有代价分布不同——省下的东西不一样,亏掉的东西也不一样。
在请求进入系统时就做出保留与否的判断,是三种方式里实现最简单、运行开销最低的一种。它的优点是决策点分散在各处,不需要把数据先汇聚起来,也不需要等待,采集端几乎不产生额外的内存与网络负担。代价是决策时掌握的信息最少:此刻只知道这是一个请求,还不知道它会不会出错、会不会超时、属于哪个租户、是不是关键路径。一旦判定丢弃,后面发生什么都无法挽回。因此入口决策适合那些对成本极度敏感、且主要关注整体趋势的系统,不适合把"出错必留"当作硬性要求的系统。
等一条链路的片段收齐之后再决定,是唯一能按结果做判断的方式:已知这条链路有没有报错、耗时是否超过阈值、是否命中某个关键接口或某个重要租户,因此可以精确地保留"最该看的那部分"。代价也很明确——在决策之前必须把这条链路的全部片段缓冲起来,这需要一个等待窗口、需要一个能容纳窗口内所有未完成链路的内存空间,并且要求同一条链路的片段都送到同一个决策点。等待窗口越长,能判断的链路越完整,但缓冲占用也越大;窗口太短,慢链路还没收齐就被判定,反而会系统性地丢掉最慢的那批请求。
跟随上游的方式由入口处的判定结果向下传递,同一个请求经过的所有服务都沿用同一个决定。它解决的是一致性问题,且几乎不增加额外的汇聚成本,因为决定只需要随请求上下文往下传。它的局限在于下游失去自主权:如果入口判定丢弃,即使下游某个服务想要对自身的关键接口保留更多样本,也拿不到完整的上游上下文;反之如果入口判定保留,下游的降采样诉求也无法在这个请求上生效。此外,对于没有明确入口的内部任务、定时作业、消息消费这类链路,跟随机制需要一个"谁来做入口"的约定,否则会出现无人决策的情况。
| 采样方式 | 决策时机 | 对数据量的影响 | 保留异常样本的能力 | 实现上要额外付出什么 |
|---|---|---|---|---|
| 入口决策(头部采样) | 请求进入系统时立即判定,判断依据只有此刻已知的上下文 | 按固定比例削减,写入量与采样率近似线性相关,最容易预测 | 弱。出错与超时发生在决策之后,无法补救,异常样本同样按概率被丢弃 | 几乎不需要额外组件,采集端开销低,无需缓冲与汇聚 |
| 后置决策(尾部采样) | 等待链路片段收集完整或到达等待窗口后再判定 | 削减比例取决于保留规则的命中范围,只对命中的链路生效 | 强。可按是否出错、是否超阈值、是否属于关键接口或租户强制保留 | 需要缓冲内存、等待窗口与汇聚层,并按链路标识分流 |
| 跟随上游决策(父级跟随) | 沿用入口已做出的判定,随请求上下文向下传递 | 与入口采样率一致,下游不再独立增减数据量 | 取决于入口的判定方式,自身不产生额外的异常保留能力 | 需要保证判定标志在跨服务、跨消息中间件传递时不丢失 |
| 按业务分桶的组合策略 | 入口先做基础判定,再按服务、接口、租户分层调整,并对异常强制保留 | 削减集中在低价值流量上,高价值流量保留比例更高 | 强。通过强制保留规则把错误与慢请求排除在概率丢弃之外 | 需要维护分层配置、规则优先级与定期复核机制 |
无论采用哪种决策时机,都有一个前置条件:同一条链路的所有片段必须做出相同的决定。这不是一个可选优化项,而是正确性问题。如果一致性没有保证,后面所有关于采样率的讨论都失去意义,因为你看到的样本本身就是残缺的。
整条链路都看不到,你至少知道自己没有数据,会去找日志、找指标、找其他证据。但如果只看到一半——上游有、下游没有,或者某个关键服务恰好缺了一段——你会以为自己看到了全貌。断片的链路会让人把"最后一个可见的环节"误判为问题所在,因为它是链条上最后出现的信息。这种误判比完全没有数据更消耗时间:它给出一个看起来合理的错误答案,而错误答案会让人在错误的方向上排查很久。一致性问题的危害不在于少了多少数据,而在于它会系统性地制造错误归因。
后置决策要求把所有片段收集齐之后再统一判断,而片段是由不同服务、不同实例各自产生的。如果每个片段被随机送到不同的处理节点,那么没有任何一个节点能看到完整的链路,也就无法做统一判断。因此必须保证同一条链路标识的所有片段流向同一个处理节点:由这个节点负责缓冲、等待、判定与输出。这个约束决定了采集链路的拓扑形态——不是"把数据发出去"就够了,而是"把同一条链路的数据发到同一个地方"。
常见的请求分发策略追求的是均匀:把请求尽量平均地摊到后端各个实例上,避免热点。但均匀分发会把同一条链路的片段打散到不同节点,恰好与汇聚需求冲突。因此采集与汇聚这一层需要的不是普通负载均衡,而是按链路标识做哈希分流——用链路标识作为分流键,保证同一条链路恒定落到同一个处理节点。由此带来的次生问题是:某些链路特别大、某些租户流量特别集中时,会出现节点间负载不均,需要通过虚拟节点、一致性哈希、或在处理节点扩缩容时做片段的重新路由来缓解。另外,处理节点本身需要有缓冲上限与丢弃保护,避免缓冲被大量慢链路占满后影响整体吞吐。
把采样率理解成"全系统统一的一个数字",是很多团队在成本压力下的第一反应,也是最容易出问题的做法。更实际的做法是把流量按价值分层,对不同层采取不同的保留强度。
入口处的采样率决定了"有多少链路是完整可查的",因为一旦入口判定丢弃,后面所有环节都不会有这条链路的记录。而内部服务之间的调用片段,可以在入口已保留的链路范围内再降一层——前提是这些片段仍然挂在链路标识下、可以通过汇聚点补齐或被一致地丢弃。常见的做法是入口保持相对较高的采样率以保证命中率,内部按服务类型逐步降低,把节省下来的额度留给真正需要细看的路径。这样既压住了总量,又保住了"完整链路"的绝对数量。
把业务划分为几个关键度层级是最直接的分桶方式:直接产生收入的链路、影响用户核心体验的链路走高保留;后台同步、报表生成、内部巡检这类链路走低保留甚至只留指标。分桶的关键在于先定义清楚"哪些路径属于高价值",这个判断应当由业务影响面决定,而不是由流量大小决定——流量最大的路径常常是最不重要的路径。分桶之后还有一个细节:关键度不是一成不变的,大促期间、发版窗口期、故障恢复期的价值分布与平时不同,分桶配置需要支持临时调整。
接口维度适合处理"同一个服务内不同接口价值差异很大"的情况:读多写少的查询接口可以大幅降低保留,写入类、结算类接口保持高保留。租户维度适合多租户平台:付费等级高的租户、处于试用期的租户、正在报障的租户可以有更高的保留强度,而大规模低价值租户走低保留。按租户分桶还有一层额外的价值——它能避免"大租户的流量把小租户的样本挤掉"的情况,因为采样如果只按总量控制,流量占比高的租户会自然占据大部分保留名额。
在所有分层策略之上,应当有一条最高优先级的规则:凡是出错的链路、凡是耗时超过阈值的链路,一律保留,不参与概率丢弃。这条规则直接针对等比采样最致命的缺陷——它让采样机制第一次"知道"哪些样本重要。实现上它属于后置决策,因为只有链路收齐后才能知道结果与耗时。需要注意的是,强制保留必须配套上限保护:当系统发生故障、错误率整体飙升时,如果无条件保留所有错误链路,写入量会在最需要系统稳定的时候冲到峰值,反而压垮采集与存储。常见做法是给强制保留设置速率上限或降级开关。
规则写得出来只是第一步,写得有效才是难点。实践中大量团队的保留规则在运行几个月后就已经名存实亡:要么被后来的规则覆盖,要么阈值早就不再适用,要么规则数量多到没人敢改。
多条规则同时存在时,必须有明确的优先级与匹配顺序,并且这个顺序要能被人在事后再现出来。常见的有效顺序是:强制保留类规则最高(错误、超时、指定租户),其次是业务关键度分桶,再次是按接口或服务的分层,最后是默认的基础采样率。关键点是"一旦命中就不再向下匹配",并且对于叠加规则要有明确的合并语义——例如同一条链路同时命中高保留桶和低保留桶时,取高者还是取低者,必须写死。优先级不明确会导致一个很隐蔽的问题:规则生效与否取决于配置的书写顺序,而配置顺序通常不是有意设计的。
慢请求阈值最常见的错误是拍一个数——比如"超过一秒就留"。正确的做法是反过来从问题出发:我要解释的是什么样的慢?如果目标是解释尾部,那么阈值应当设在当前分位数附近,使得被保留的样本量维持在"足以归纳规律"的水平,而不是让阈值低到把大量普通请求也纳入进来。阈值还需要跟着系统水平漂移:当整体耗时改善或恶化时,固定阈值会让保留样本量发生数量级的变化。相对阈值(按当前分布的分位数动态调整)比绝对阈值更稳定,但也更难解释,需要在两者之间权衡。
分桶与强制保留带来的灵活性是有成本的:每加一条规则,就多一处需要理解、需要维护、需要在变更时同步的地方。规则数量增长到一定程度后,会出现两个典型症状:一是没人能回答"这条链路为什么被保留/被丢弃",排查成本转移到规则本身;二是规则之间出现冲突或重叠,实际生效结果与配置意图不符。控制规则数量的办法是定期做归并与删除——合并语义相近的规则,删除长期零命中的规则,把例外规则收敛成少数几条通用规则。规则不是越多越好,能被理解才有用。
业务接口会下线、租户结构会变化、关键路径会迁移、调用拓扑会重构,而保留规则通常写完之后就不再动。结果就是规则与现实的偏离越拉越大:原本标记为高价值的接口已经不再使用,新上线的核心链路却落在默认低采样桶里。有效的做法是给规则设定复核周期,并在每次大的架构或业务变更后检查一遍:现有分桶是否仍然覆盖核心路径、强制保留的阈值是否仍然合适、有没有长期零命中的规则可以清理、默认采样率是否需要随流量增长重新评估。复核的输出应当是具体的配置项变动,而不是一份没人看的报告。
讨论采样率绕不开成本,但成本不是单一维度的数字,而是几个相互牵制的部分。把它们拆开看,才能判断"降采样"到底省下了哪一部分、又有可能把压力转移到哪里。
写入量是最直观的一项,它与采样率近似成正比,也最容易通过调采样率压下来。但写入量的压力往往不是均匀的:发版、大促、故障期间会出现尖峰,而系统容量必须按尖峰配置。因此比起"平均写入量降了多少",更值得关注的是"尖峰写入量有没有被削平"。强制保留规则在这里会与降采样目标产生冲突——故障期间错误链路激增,恰好是写入量最高的时候,需要靠速率上限或降级开关来削峰。
存储占用等于单位时间写入量乘以保留期,因此降低成本有两条路:减少写入,或缩短保留期。这两条路对可观测能力的影响是不一样的。缩短保留期会影响"回溯类问题":很多问题不是当场发现的,而是在几天后被提出,或者需要与上周的同一时段对比。如果保留期被压得过短,历史对比与事后回溯会直接失去数据来源。相比之下,降低采样率影响的是"命中率",缩短保留期影响的是"时间窗口",两者不能互相替代。合理的做法是先确定业务需要的最长回溯窗口,再由窗口反推可接受的存储量,最后才决定采样率,而不是反过来。
数据量下降通常会带来检索变快,但这不是必然。检索耗时更多取决于索引结构、查询条件的选择性、以及需要扫描的数据范围。如果数据量降了但查询仍然要扫描全时间窗、或者索引设计没有覆盖常用过滤维度,体感并不会改善。另一个容易被忽略的点是:采样之后的查询往往需要更多轮——因为没有直接命中目标链路,排查者会反复调整条件重试,实际消耗的时间反而增加。评估成本时把"人找数据的时间"算进去,结论常常与只看存储账单时不同。
最后一项是采集与汇聚本身的开销,它常常在预算讨论中被漏掉。后置决策需要在决策前缓冲完整链路,缓冲占用的内存与等待窗口的长度直接相关;按链路标识汇聚要求处理节点承担分流与缓冲职责;把数据从各服务送到汇聚点还带来额外的网络与序列化开销。这意味着降低采样率并不总是线性地降低总成本:采集与汇聚层的固定开销是与流量规模相关但不完全随采样率下降的部分。一万网络深耕 IDC 行业 19 年(成立于 2007 年),在华南、华东、华北及中国香港、海外多地整合自营节点与 BGP 多线资源,提供服务器租用、机柜托管与带宽接入的一体化交付;采集端与汇聚层的机器通常需要按写入压力与缓冲窗口单独评估。
围绕采样率的讨论里,有几个反复出现的误区。它们不一定显眼,但往往决定了调整之后系统到底是变好了还是变差了。
采样率只能控制"保留多少",不能控制"保留哪些"。当真正的问题是保留错了对象时,调高或调低采样率都解决不了:调高只是让错误样本被命中的概率变大,代价是成本回到原点;调低则让本来就稀缺的样本更难命中。能把"保留哪些"这件事讲清楚的,是分桶与强制保留规则,而不是采样率这个数字。因此在动手调采样率之前,先确认要保留的对象是否已经被规则显式表达出来。
用"每天保留多少条链路"来评估采样效果,会掩盖分布上的问题。总量达标并不代表关键样本够用:可能百分之八十的保留额度被少数高流量低价值接口占满,而真正需要看的接口一条都没留下。评估时应当按维度拆解——按接口、按服务、按租户、按是否出错分别统计保留量与命中量,尤其要看"错误样本中被保留的比例"这一项。这个比例比总采样率更能反映策略是否有效。
只盯着存储账单,容易低估采集与汇聚环节的成本。缓冲内存随等待窗口增长、汇聚节点需要处理分流与重路由、数据上报本身占用网络与 CPU——这些开销在流量增长时同样会上升,而且不像存储那样可以通过缩短保留期轻易削减。更现实的问题是,当采集端资源不足时,它会以丢数据的方式表现出来,而这种丢失与采样策略的丢弃混在一起,让人难以分辨"是策略没保留"还是"是采集端没扛住"。因此采集端的资源与队列水位应当单独纳入监控。
采样数据的定位是观测与诊断,不是凭证。用它做计费对账、用量核对、结算仲裁,等于把概率性误差引入了需要确定性的环节,而且这种误差在系统出问题时最大——恰恰是最需要准确的时候。如果业务确实需要逐条依据,应当单独建立不采量的留存通道,并把它与观测通道在存储、保留期、访问权限上分开管理。两者的成本结构不同,混在一起既省不下钱,也留不下证据。
能,但排障的方式会变。低采样率下,你大概率拿不到出问题的那一次请求的完整链路,只能靠聚合指标定位到"哪个服务、哪个时间段、哪个分位发生了异常",再结合日志、事件记录、以及少量命中的样本做推断。这意味着排障从"看证据"退化为"做推断",耗时和不确定性都会上升。判断能不能接受,要看业务对排障时效的要求:允许慢慢推断的系统可以压得很低,要求快速定界的系统不行。
因为出错请求在总量中占比很低,而等比采样完全不考虑样本的重要性,只按概率丢弃。稀有事件乘以低采样率,结果经常是零命中。这不是运气问题,而是机制问题:只要决策发生在结果已知之前,采样机制就无法区分这次请求会不会出错。解决方向只有两个——要么把决策推迟到结果已知之后(后置决策并按结果强制保留),要么换用不依赖采样的数据源(指标与日志)来覆盖这部分场景。
要。后置决策的前提是同一条链路的所有片段到达同一个决策点,而片段由不同服务各自产生,天然是分散的。因此需要一个负责按链路标识分流与缓冲的汇聚层,它承担等待窗口内的内存占用,并在窗口结束时做出判定。这个汇聚层是后置决策的主要成本来源,也是容量规划的主要对象:等待窗口越长、未完成链路越多、单条链路的片段数越多,缓冲压力越大。
这是典型的决策不一致。可能的原因有几种:判定标志在跨服务传递时丢失(尤其是跨消息队列、跨异步任务、跨线程池时上下文没有透传);部分服务没有启用跟随上游的逻辑,自行按本地采样率决策;或者汇聚层的分流键取值不同,导致同一条链路的片段落到了不同节点。排查时先看缺失发生在哪一段边界,再逐一检查上下文透传与分流键的一致性。
可以,但要分清是"入口维度"还是"内部维度"。如果这个核心服务本身就是链路入口,那么直接提高它的入口采样率即可。如果它是链路中间的一环,那么单独提高它的采样率只会产生更多孤立片段——上游没保留的链路,到了这里即便保留也无法构成完整链路。这种情况下有效的做法是提高入口采样率,或者在汇聚层对经过该服务的链路标识做整体保留。
一个实用的分工是:指标回答"有没有问题、问题在哪个维度、什么时候开始的",追踪回答"这一次具体是怎么发生的"。指标全量采集、成本低、适合告警与趋势;追踪按样本保留、成本高、适合还原与归因。两者的衔接点是告警:由指标触发告警,再由告警时间窗内保留下来的追踪样本做定位。如果采样率过低导致告警时间窗内没有可用样本,这个衔接就断了——所以采样策略的设计应当与告警的时间粒度对齐。
取决于告警用的是指标还是追踪数据。基于指标的告警不受采样影响,因为指标通常全量采集、不做概率丢弃。基于追踪数据的告警(例如对追踪样本做条件统计再触发)会受采样影响:样本变少后,低发生率的条件可能长时间不命中,造成漏报;统计值的抖动变大,也可能造成误报。因此不建议把采样后的追踪数据作为告警的唯一数据源,告警应当建立在全量的指标或日志之上。
落地前逐项确认,可以避免上线后反复调整。第一,列出必须用追踪数据回答的问题清单,并标注每一类属于趋势、还原、长尾还是取证,取证类直接分离出采样体系。第二,确认需要的最长回溯窗口,由窗口反推保留期,而不是由成本倒推。第三,确认决策时机:是否有"出错必留"的硬性要求,有则必须支持后置决策与汇聚层。第四,确认一致性方案:判定标志能否在跨服务、跨异步边界完整透传,分流键是否全局统一。第五,确认分桶维度:按关键度、接口还是租户,桶的数量控制在可维护范围内。第六,写清规则优先级与合并语义,保证事后可以复现任意一条链路被保留或被丢弃的原因。第七,给强制保留配置速率上限与降级开关,防止故障期间写入量反噬。第八,确定复核周期与责任人。涉及采集端与汇聚层的机器规格、带宽与部署地点时,需要按写入压力、缓冲窗口与保留期一并评估;一万网络深耕 IDC 行业 19 年(成立于 2007 年),在华南、华东、华北及中国香港、海外多地整合自营节点与 BGP 多线资源,提供服务器租用、机柜托管与带宽接入的一体化交付;具体机型、带宽与报价以官网实时信息或咨询确认为准。
有几种情形下,无论把采样率调到多少都无济于事,需要换手段。第一种是需要逐条凭据的场景:计费对账、安全取证、合规留痕,采样本身就与需求冲突,只能走独立的全量留存通道。第二种是要求"出错必留"的系统:只要决策发生在结果已知之前,概率丢弃就无法避免漏掉错误样本,必须引入后置决策与强制保留。第三种是一致性没有保证的系统:调采样率只会改变断片的概率,不会消除断片,先修上下文透传与分流键。第四种是瓶颈在采集端而非存储端的情况:写入量并不是主要压力,缓冲内存、汇聚吞吐、上报带宽才是,此时降低采样率收益有限,应当优化采集链路与窗口配置。第五种是保留期已经被压到短于业务回溯需求的系统:这时缺的不是样本密度而是时间窗口,继续降采样只会雪上加霜,应当优先延长保留期或做冷热分层。第六种是查询本身很慢但数据量并不大的系统:瓶颈在索引与查询方式,降采样带来的改善有限。识别出这几种情形,比反复试探采样率要有效得多。
Copyright © 2013-2020 idc10000.net. All Rights Reserved. 一万网络 科技有限公司 版权所有 深圳市科技有限公司 粤ICP备07026347号
本网站的域名注册业务代理北京新网数码信息技术有限公司的产品