虚拟处理器是南大通用GBase 8s数据库(gbase database)架构里比较有特色的一块,理解它的工作方式,比单纯调参数更能解决实际问题。基于虚拟处理器这套架构,日常运维里有几个实际使用中会遇到的点,整理出来供大家参考。
一是 VP 可以动态调整,不用重启数据库。数据库运行过程中,可以根据业务高峰临时增加虚拟处理器数量,压力降下来之后再把空闲的 CPU 类 VP 终止掉。这个过程不影响业务连接,适合在有明显业务峰谷的场景使用,比如上午下午高峰加 VP、夜里闲时回收资源。
二是 VP 可以绑定到指定 CPU。在多核服务器上,可以把不同类型的 VP 绑到不同的物理核心上,避免互相抢占。这个能力对资源隔离要求比较高的场景有用,比如把核心业务相关的 VP 固定在一组核心上,把其他辅助类 VP 放在另外一组核心,减少 CPU 调度上的互相干扰。
三是理解 "共享" 带来的资源协同。因为多个线程共享同一组资源,VP 内部自己会按线程协调访问,不需要操作系统反复协调进程间的资源竞争。这也是为什么 GBase 8s 在中等并发量下资源占用显得比较克制。反过来,在做容量规划时,VP 数量并不是越多越好 ——VP 太多,反而会因为内部抢占和线程切换增加额外开销,一般根据 CPU 核数和实际压测结果来定。
四是故障排查时看 VP 状态。数据库出现卡顿、某类任务堆积时,先看各类 VP 是不是都在正常工作、数量够不够,是 GBase 8s 排障的常规第一步。VP 数量不足、某类 VP 卡住,都会直接表现为业务响应变慢,但表象可能和 SQL 慢查询很像,区分开这两类问题,能少走很多弯路。