从2020-2021年开始,我们团队逐步将产品从RHEL7升级到RHEL8操作系统,采用的内核版本是稳定的4.18系列,经过两三年的soak,现在这个系统是相当的稳定,问题不多。作为研发人员,最直观的感受就是夜间紧急支持的情况大幅下降,从过去每个季度几次降到现在全年都不超过两三次。这种稳定性让我们可以更专注于新功能的开发,而不是疲于奔命地处理系统问题。根据当前的技术评估,这个系统架构预计还能继续稳定运行五六年,基本能满足产品的生命周期需求。这一段时期算是非常舒服的日子。
以过去的经验来看,每次大版本升级都可能带来诸多挑战:首先是应用层的适配工作,可能需要修改大量代码来兼容新系统API和库函数;其次是系统层面的潜在问题,包括性能变化、安全策略调整等。比如最近我们就遇到一个典型的性能问题案例:在OpenStack虚拟化环境中,客户机的steal CPU指标异常升高,经过排查发现是由于底层主机系统升级到了RHEL9.4(内核版本5.14)导致的。具体表现为nft_do_chain的内核函数占用率从平时的4.3%突然飙升到5.86%,这明显影响了系统整体性能。
这个案例给我们敲响了警钟:随着5.14内核版本的广泛应用,我们可能很快就要面临大规模的系统升级工作。这不仅仅意味着要投入大量时间进行性能调优和问题排查,更重要的是需要提前规划好测试策略和回滚方案,确保升级过程不会影响现有业务的稳定性。这样说起来,5.14要来了,又要忙起来了!
bash
5.86% vhost-52056 [nf_tables] [k] nft_do_chain
--5.57%--nft_do_chain