百度区块链 xuperchain 节点端 tps统计脚本
Posted 软件工程小施同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百度区块链 xuperchain 节点端 tps统计脚本相关的知识,希望对你有一定的参考价值。
1. 统计依据
根据xchain.log中的txCount进行统计,如日志
t=2021-06-21T19:24:51+0800 lvl=info msg="start to confirm block" module=xchain blockid=649a6f7848e7103aa64f0b7c102291d972c7485717ebfd03a4c561d3e669ae54 txCount=1
2. 使用
bash get_tps_from_log.sh xchain.log 21:21:28 21:21:58
3. 统计脚本get_tps_from_log.sh
#!/bin/bash
function Usage()
{
echo "Usage:"
echo "bash $0 log_file_path start_time end_time"
echo "bash ./node_side/xuperchain/get_tps_from_log.sh ../logs/xchain.log 20:50:00 20:51:30"
exit 1
}
log_file="${1}"
if [ $# -eq 1 ];then
if [ "${log_file}"="-h" ]||[ "${log_file}"="--help" ];then
Usage
fi
fi
if [ $# -lt 3 ];then
Usage
fi
start_time="${2}"
end_time="${3}"
# t=2021-06-21T19:24:51+0800 lvl=info msg="start to confirm block" module=xchain blockid=649a6f7848e7103aa64f0b7c102291d972c7485717ebfd03a4c561d3e669ae54 txCount=1
# grep 'lvl=info msg="start to confirm block"' xchain.log | awk -F' ' '{print $1}' | cut -d'T' -f2 | cut -d'+' -f1 | sort | uniq
timeList=$(grep 'lvl=info msg="start to confirm block"' ${log_file} | awk -F' ' '{print $1}' | cut -d'T' -f2 | cut -d'+' -f1 | sort | uniq)
txTotal=0
statistic_end=${end_time}
statistic_start=${start_time}
started=0
for time in ${timeList}
do
if [ "${time}" \\> "${start_time}" ]&&[ "${time}" \\< "$end_time" ];then
echo "====time:${time}"
txList=$(grep 'lvl=info msg="start to confirm block"' ${log_file} | grep ${time} | awk -F' ' '{print $9}' | cut -d'=' -f2)
for tx in ${txList}
do
echo "tx:${tx}"
if [ $started = 0 ] && [ $tx -gt 1 ];then
started=1
statistic_start="${time}"
fi
if [ $tx -gt 1 ];then
# Every 3 seconds, xuperchain makes a block by default
# In each block, there will be a TX, which is a transaction to save a reward for miners
txTotal=$((txTotal+tx-1))
statistic_end=${time}
fi
done
fi
done
echo "statistic_start = ${statistic_start}"
echo "statistic_end = ${statistic_end}"
start_hour=$(echo ${statistic_start} | awk -F':' '{print $1}')
start_min=$(echo ${statistic_start} | awk -F':' '{print $2}')
start_s=$(echo ${statistic_start} | awk -F':' '{print $3}'| cut -d'.' -f1)
start_t=$(echo "$start_hour*3600000+ $start_min*60000 + $start_s*1000" | bc)
end_hour=$(echo ${statistic_end} | awk -F':' '{print $1}')
end_min=$(echo ${statistic_end} | awk -F':' '{print $2}')
end_s=$(echo ${statistic_end} | awk -F':' '{print $3}'| cut -d'.' -f1)
end_t=$(echo "$end_hour*3600000+ $end_min*60000 + $end_s*1000" | bc)
delta_time=$((end_t-start_t))
if [ $delta_time = 0 ];then
tps=$(echo "scale=1;${txTotal}*1000/3" | bc)
else
tps=$(echo "scale=1;${txTotal}*1000/$delta_time" | bc)
fi
echo "the unit of execute_time is ms, the unit of tps is tx/s"
echo "[tps_summary],total_transactions=${txTotal},execute_time=${delta_time},tps=${tps}"
以上是关于百度区块链 xuperchain 节点端 tps统计脚本的主要内容,如果未能解决你的问题,请参考以下文章
区块链xuperchain ubuntu多机多节点 single共识 部署教程
区块链 xuperchain xuper-java-sdk 部署使用EVM 合约 教程