hey -n 300 -c 10 'http://127.0.0.1:8080/api/orders?page=1&size=200'
grep -c ThrottlingException /var/log/app/app.log

订单列表加了手机号解密,每行单独调一次 KMS Decrypt,一页 200 条,接口 P99 从 80 毫秒涨到 1.2 秒,KMS 的 ThrottlingException 也开始出现。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:解密调用放在循环里,每次都是一次网络往返。KMS 有每秒请求配额,批量场景很快打满。列表页大部分手机号只是脱敏展示,根本不需要解密。

「逐条加密耗时」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。同一份配置存在多处的,先确认改的是被加载的那一份。

新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

处理上按这个顺序:列表只返回脱敏后的尾号 不调解密;详情页才解密 并且一次请求只解一条;确实要批量时用 KMS 的数据密钥做信封加密 本地解密;压测 200 条列表确认 P99 回到 100 毫秒内。

确认没问题再收工,列表 P99 降到 100 毫秒以内 日志里不再出现 ThrottlingException。

作者 9823189