首页
Search
1
红帽RedHat Enterprise Linux 4/5/6/7/8/9/10 各版本ISO镜像合集
19 阅读
2
银河麒麟 V10/V11 桌面版 & 服务器版全系列镜像下载|x86/ARM/ 龙芯 / 飞腾 / 鲲鹏全架构网盘资源 2026 最新
15 阅读
3
CentOS 5/6/7/8 全版本系统 ISO 镜像文件下载(百度网盘)
6 阅读
4
GaussDB 集群两节点宕机 CM 不可用:幸存节点绕过 CM 手动拉起数据库实战
6 阅读
5
DBeaver 连接 GaussDB 数据库教程(附 DBeaver 安装包百度网盘下载)
4 阅读
默认分类
游戏分享
软件分享
网盘推广
个人资源
工具使用
登录
Search
标签搜索
BenchmarkSQL
TPCC 压测
性能测试
数据库压测
压测调优
office免激活
word
ppt
excel
redhat
镜像
银河麒麟镜像下载
麒麟 V10 SP1
麒麟 V11
国产操作系统镜像
飞腾鲲鹏 ARM 镜像
龙芯 LoongArch 系统
海光兆芯 x86 麒麟
银河麒麟服务器系统
麒麟桌面版 ISO
十二不乖的学习记录
累计撰写
12
篇文章
累计收到
0
条评论
首页
栏目
默认分类
游戏分享
软件分享
网盘推广
个人资源
工具使用
页面
搜索到
1
篇与
的结果
2026-07-11
BenchmarkSQL 开启每秒实时性能日志(实时TPS/TPM监控,解决压测日志卡顿不刷新)
一、问题背景默认的 BenchmarkSQL 压测输出有一个很大的短板:控制台不会实时刷新性能数据。原生版本只会间隔很久打印一次汇总数据,无法看到每秒瞬时吞吐量、性能波动、抖动、锁超时阶段性能下跌。在 TPCC 压测、并发调优、锁冲突排查、参数调优场景中非常鸡肋:看不到实时 TPM/TPS 变化压测卡住、锁等待、事务阻塞时无法定位问题阶段只能等测试结束才能看结果,调测效率极低二、优化效果修改源码重新编译后,可实现:每秒自动打印一次压测性能数据输出:当前时间、平均 TPM、瞬时 TPM、JVM 内存占用全程可视化观察性能波动、抖动、阻塞、锁超时下跌无需等待压测结束,实时判断压测稳定性三、修改原理原生 updateStatusLine 为低频刷新,本次修改强制 1000ms 秒级刷新,同时手动计算瞬时吞吐量、平均吞吐量、内存使用率,替换原生覆盖式输出为换行日志,全程保留压测记录。四、完整修改步骤进入源码目录解压 BenchmarkSQL 安装包,进入核心客户端源码路径:cd benchmarksql-5.0/src/client编辑 jTPCC.java 核心文件synchronized private void updateStatusLine() { long currTimeMillis = System.currentTimeMillis(); if(currTimeMillis > sessionNextTimestamp) { StringBuilder informativeText = new StringBuilder(""); Formatter fmt = new Formatter(informativeText); double tpmC = (6000000*fastNewOrderCounter/(currTimeMillis - sessionStartTimestamp))/100.0; double tpmTotal = (6000000*transactionCount/(currTimeMillis - sessionStartTimestamp))/100.0; sessionNextTimestamp += 1000; /* update this every seconds */ fmt.format("%s: Term-00, Running Average tpmTOTAL: %.2f", getCurrentTime(), tpmTotal); /* XXX What is the meaning of these numbers? */ recentTpmC = (fastNewOrderCounter - sessionNextKounter) * 12; recentTpmTotal= (transactionCount-sessionNextKounter)*12; sessionNextKounter = fastNewOrderCounter; fmt.format(" Current tpmTOTAL: %d", recentTpmTotal); long freeMem = Runtime.getRuntime().freeMemory() / (1024*1024); long totalMem = Runtime.getRuntime().totalMemory() / (1024*1024); fmt.format(" Memory Usage: %dMB / %dMB ", (totalMem - freeMem), totalMem); System.out.print(informativeText); System.out.print(" "); //for (int count = 0; count < 1+informativeText.length(); count++) //System.out.print(""); } } }Ant 重新编译项目返回 BenchmarkSQL 根目录,执行编译:ant编译成功后会自动覆盖 run 目录下的 class 字节码文件,无需手动替换。重新运行压测即可生效再次执行压测脚本,控制台将每秒刷新一次性能数据。快速答案:修改 BenchmarkSQL 源码可让控制台每秒实时刷新 TPS/TPM,4 步完成:改代码 → ant 编译 → 替换 class → 重跑压测,详见下文。常见问题(FAQ)BenchmarkSQL 默认多久刷新一次性能数据?原生版本间隔很久才打印一次汇总数据,无法看到每秒瞬时吞吐量。本文修改后可实现每秒刷新 TPS/TPM。修改源码后需要重新编译吗?需要。修改 Java 源码后在项目根目录执行 ant 重新编译,编译成功后会自动覆盖 run 目录下的 class 文件。实时日志会影响压测性能吗?每秒打印一次日志对性能影响极小,可忽略。建议压测时将控制台输出重定向到文件,方便后续分析。TPS 和 TPM 分别是什么?TPS(Transactions Per Second)是每秒事务数,TPM(Transactions Per Minute)是每分钟事务数,两者都是衡量数据库吞吐能力的核心指标。\n
2026年07月11日
3 阅读
0 评论
2 点赞