信创平台跑可观测系统常见“能装但慢”。本文给出可复制的调优路径:ARM 页大小与 NUMA、达梦/金仓关键参数、存储分层,以及一套压测方法与结果对比,把性能拉平到 x86。
信创环境部署可观测系统,装得起来只是第一步。不少团队在鲲鹏、飞腾服务器上跑起来之后,发现查询延迟比原来的 x86 环境高一截,采集吞吐也上不去,最后得出结论“国产化性能不行”。实际多数时候不是硬件不行,而是参数没调、架构没适配。下面按四条线拆,每一条都有可验证的指标。
鲲鹏、飞腾是 ARM 架构,第一个要确认的是页大小。部分鲲鹏服务器默认 64KB 页,而多数存储引擎按 4KB 页编译,页不匹配会导致内存映射开销变大、查询变慢。用 getconf PAGESIZE 确认当前页大小,如果返回 65536,要么切换到 4KB 页内核,要么用官方提供的 64KB 页专用包,别硬跑。
第二个是 NUMA 亲和。ARM 多路服务器的跨 NUMA 访问延迟比 x86 更明显,采集器和存储节点建议用 numactl --cpunodebind 把进程绑定到本地 NUMA 节点,或者让调度器按 CPU 亲和分配。实测在双路鲲鹏上做 NUMA 绑定,查询 P99 延迟能降 20% 到 30%。
元数据和告警规则存数据库,数据库参数直接影响控制台响应。达梦 DM8 有几个关键项:
-- 缓冲池按物理内存的 40%~60% 分配
ALTER SYSTEM SET 'BUFFER' = 8192;
-- 关闭 direct IO,提升写入吞吐
ALTER SYSTEM SET 'DIRECT_IO' = 0;
-- 调大重做日志缓冲区,减少频繁刷盘
ALTER SYSTEM SET 'RLOG_BUF_SIZE' = 128;
人大金仓 KingbaseES 对应的调整点是 shared_buffers(建议物理内存的 25%)、effective_cache_size 和 checkpoint_completion_target = 0.9。改完参数记得重启生效,并用平台的 precheck.sh 复检一遍。
日志量大的场景,存储才是性能大头。把最近 7 天放热层(SSD、全字段索引),7 到 30 天放温层,30 天以上冷层归档。热层窗口是日常排查体验的关键,别图省钱改太短。另一个容易被忽略的是索引裁剪:按服务、namespace 给日志建分区,查询时带上时间范围和服务名,让引擎只扫必要的分片,别一上来就全库扫。
调优要用数据说话,别凭感觉。推荐这套压测方法:用自带的压测工具或 wrk/vegeta 模拟原生产流量,分三组跑——一是采集吞吐,模拟 N 个节点同时上报日志和指标,看 Agent 的 CPU 和队列深度;二是查询延迟,准备一组真实查询语句,测 P50/P95/P99;三是告警延迟,触发一条规则,测从数据到达到告警送达的时间。
每改一个参数就跑一遍三组压测,记录前后对比。某客户在双路鲲鹏 920 上的调优结果是:NUMA 绑定加 4KB 页加达梦参数调整后,查询 P99 从 3.1 秒降到 1.4 秒,采集吞吐从 28k events/s 提到 55k events/s,和同规格 x86 环境基本持平。结论不是“国产化不行”,而是“国产化要按国产化的方式调”。