如何简单地测算系统吞吐量
2016-02-19 16:49
281 查看
在流计算、数据传输之类的系统中,有时候需要统计、压测下一下系统的吞吐能力,这里写了一段简单实现记录一下,方便以后使用,构造参数有两个,一个是name,用于区分,一个是采样周期。
发送或者接收代码中调用update方法即可
[code]public class ThroughputProbe extends TimerTask { private static Logger log = Logger.getLogger(ThroughputProbe.class); private long count = 0; private int sampleCount = 0; private long samplingRateInSeconds; private String name; private double maxThroughput = 0.0; private double minThroughput = Double.MAX_VALUE; private double accumulatedThroughput = 0.0; DecimalFormat formatter = new DecimalFormat("#.000"); Timer timer; private long totalEventCount = 0; public ThroughputProbe(String name, int samplingRateInSeconds){ this.name = name; this.samplingRateInSeconds = samplingRateInSeconds; } public void startSampling(){ count = 0l; timer = new Timer(); timer.schedule(this, samplingRateInSeconds * 1000, samplingRateInSeconds * 1000); } public void update(){ count++; totalEventCount++; } @Override public void run() { if (log.isDebugEnabled()){ if (totalEventCount > 0){ double throughput = count / samplingRateInSeconds; if (maxThroughput < throughput){ maxThroughput = throughput; } if (minThroughput > throughput && throughput != 0.0){ minThroughput = throughput; } accumulatedThroughput += throughput; sampleCount++; log.debug("[ThroughputProbe:" + name + "] " + count + " events in " + samplingRateInSeconds + " seconds. Throughput=" + formatter.format(throughput) + " events/s.(Avg=" + formatter.format(accumulatedThroughput / sampleCount) + " ,Max=" + formatter.format(maxThroughput) + " ,Min=" + ((minThroughput == Double.MAX_VALUE) ? "0.0" : formatter.format(minThroughput)) + " ) TotalEvents=" + totalEventCount); count = 0l; } } } }
相关文章推荐
- leetcode笔记--Reorder List
- Pod基本命令
- WinCE系统下应用崩溃原因的分析方法
- Android访问网络
- centos 常用命令
- 利用python进行数据分析之pandas库的应用(二)
- Python文件夹与文件的操作
- UIButton.titleLabel.text和[UIButton setTitle:],UIButton.imageView.image和[UIButton setImage]的区别
- rpm 命令
- 简单工厂模式
- 点滴小问题总结
- 安全驾驶-摩托车 (五十七)
- 前面所有input时间的最大时间<时间<后边所有Input时间的最小时间
- .net网站关于导入excel,vs可以成功发布网站失败的问题
- C# 初始Winform--2
- 软件版本号的管理
- 八、桥接模式--结构模式(Structural Pattern)
- PHP之错误显示控制
- 简单js 操作文件(更新中)
- 高通平台ModemBindingPolicyHandler和ModemBindingPolicyHandler作用(原)