首页
Search
1
红帽RedHat Enterprise Linux 4/5/6/7/8/9/10 各版本ISO镜像合集
12 阅读
2
银河麒麟 V10/V11 桌面版 & 服务器版全系列镜像下载|x86/ARM/ 龙芯 / 飞腾 / 鲲鹏全架构网盘资源 2026 最新
9 阅读
3
DBEAVER连接gaussdb数据库
4 阅读
4
centos5/6/7/8 全版本系统iso镜像文件下载
3 阅读
5
BenchmarkSQL 开启每秒实时性能日志(实时TPS/TPM监控,解决压测日志卡顿不刷新)
1 阅读
默认分类
个人资源
工具使用
登录
Search
标签搜索
BenchmarkSQL
TPCC 压测
性能测试
数据库压测
压测调优
office免激活
word
ppt
excel
redhat
镜像
银河麒麟镜像下载
麒麟 V10 SP1
麒麟 V11
国产操作系统镜像
飞腾鲲鹏 ARM 镜像
龙芯 LoongArch 系统
海光兆芯 x86 麒麟
银河麒麟服务器系统
麒麟桌面版 ISO
十二不乖的学习记录
累计撰写
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 点赞