首页
Search
1
红帽RedHat Enterprise Linux 4/5/6/7/8/9/10 各版本ISO镜像合集
11 阅读
2
银河麒麟服务器/桌面版全版本系统镜像
8 阅读
3
DBEAVER连接gaussdb数据库
4 阅读
4
centos5/6/7/8 全版本系统iso镜像文件下载
3 阅读
5
BenchmarkSQL 开启每秒实时性能日志(实时TPS/TPM监控,解决压测日志卡顿不刷新)
1 阅读
默认分类
个人资源
工具使用
登录
Search
标签搜索
BenchmarkSQL
TPCC 压测
性能测试
数据库压测
压测调优
office免激活
word
ppt
excel
十二不乖的学习记录
累计撰写
6
篇文章
累计收到
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("\n"); //for (int count = 0; count < 1+informativeText.length(); count++) //System.out.print("\b"); } } }Ant 重新编译项目返回 BenchmarkSQL 根目录,执行编译:ant编译成功后会自动覆盖 run 目录下的 class 字节码文件,无需手动替换。重新运行压测即可生效再次执行压测脚本,控制台将每秒刷新一次性能数据。
2026年07月11日
1 阅读
0 评论
1 点赞