mirror of
https://github.com/taosdata/TDengine
synced 2026-05-24 10:09:01 +00:00
add taosadapter and taod_http perf comparison scripts
This commit is contained in:
parent
092e7f9c7b
commit
e43b97c1da
1 changed files with 138 additions and 0 deletions
138
tests/perftest-scripts/HttpPerfCompare.py
Normal file
138
tests/perftest-scripts/HttpPerfCompare.py
Normal file
|
|
@ -0,0 +1,138 @@
|
|||
from loguru import logger
|
||||
import time
|
||||
import os
|
||||
import json
|
||||
|
||||
class HttpPerfCompard:
|
||||
def __init__(self):
|
||||
self.hostname = "vm85"
|
||||
self.taosc_port = 6030
|
||||
self.http_port = 6041
|
||||
self.database = "test"
|
||||
self.query_times = 1
|
||||
self.concurrent = 1
|
||||
self.column_count = 10
|
||||
self.tag_count = 10
|
||||
self.perfMonitorBin = '/home/ubuntu/perfMonitor'
|
||||
self.taosBenchmarkBin = '/usr/local/bin/taosBenchmark'
|
||||
self.sleep_time = 20
|
||||
|
||||
self.current_time = time.strftime("%Y-%m-%d-%H:%M:%S", time.localtime(time.time()))
|
||||
self.current_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
self.log_file = os.path.join(self.current_dir, f'./performance.log')
|
||||
logger.add(self.log_file)
|
||||
logger.info(f'init env success, log will be export to {self.log_file}')
|
||||
self.sql_list = ['select last_row(*) from test.stb;',
|
||||
'select * from test.stb limit 100000;',
|
||||
'select count(*) from test.stb interval (1d);',
|
||||
'select avg(c3), max(c4), min(c5) from test.stb interval (1d);',
|
||||
'select count(*) from test.stb where t1 = "shanghai" interval (1h);',
|
||||
'select avg(c3), max(c4), min(c5) from test.stb where t1 = "shanghai" interval (1d);',
|
||||
'select avg(c3), max(c4), min(c5) from test.stb where ts > "2021-01-01 00:00:00" and ts < "2021-01-31 00:00:00" interval (1d);'
|
||||
'select last(*) from test.stb;'
|
||||
]
|
||||
|
||||
|
||||
def initLog(self):
|
||||
self.exec_local_cmd(f'echo "" > {self.log_file}')
|
||||
|
||||
def exec_local_cmd(self,shell_cmd):
|
||||
result = os.popen(shell_cmd).read().strip()
|
||||
return result
|
||||
|
||||
def genQueryJsonFile(self, query_sql):
|
||||
json_file = os.path.join(self.current_dir, f'./query.json')
|
||||
jdict = {
|
||||
"filetype": "query",
|
||||
"cfgdir": "/etc/taos",
|
||||
"host": self.hostname,
|
||||
"port": self.taosc_port,
|
||||
"user": "root",
|
||||
"password": "taosdata",
|
||||
"confirm_parameter_prompt": "no",
|
||||
"databases": self.database,
|
||||
"query_times": self.query_times,
|
||||
"query_mode": "restful",
|
||||
"specified_table_query": {
|
||||
"concurrent": self.concurrent,
|
||||
"sqls": [
|
||||
{
|
||||
"sql": query_sql,
|
||||
"result": "./query_res0.txt"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
with open(json_file, "w", encoding="utf-8") as f_w:
|
||||
f_w.write(json.dumps(jdict))
|
||||
|
||||
def genInsertJsonFile(self, thread_count, table_count, row_count, batch_size):
|
||||
json_file = os.path.join(self.current_dir, f'./insert.json')
|
||||
jdict = {
|
||||
"filetype": "insert",
|
||||
"cfgdir": "/etc/taos",
|
||||
"host": self.hostname,
|
||||
"rest_host": self.hostname,
|
||||
"port": self.taosc_port,
|
||||
"rest_port": self.http_port,
|
||||
"user": "root",
|
||||
"password": "taosdata",
|
||||
"thread_count": thread_count,
|
||||
"thread_count_create_tbl": 1,
|
||||
"result_file": self.log_file,
|
||||
"databases": [{
|
||||
"dbinfo": {
|
||||
"name": self.database,
|
||||
"drop": "yes"
|
||||
},
|
||||
"super_tables": [{
|
||||
"name": "stb",
|
||||
"childtable_count": table_count,
|
||||
"childtable_prefix": "stb_",
|
||||
"batch_create_tbl_num": 1,
|
||||
"insert_mode": "rand",
|
||||
"insert_iface": "rest",
|
||||
"insert_rows": row_count,
|
||||
"insert_interval": 0,
|
||||
"batch_rows": batch_size,
|
||||
"max_sql_len": 1048576,
|
||||
"timestamp_step": 3000,
|
||||
"start_timestamp": "2021-01-01 00:00:00.000",
|
||||
"tags_file": "",
|
||||
"partical_col_num": 1,
|
||||
"columns": [{"type": "INT", "count": self.column_count}],
|
||||
"tags": [{"type": "BINARY", "len": 16, "count": self.tag_count}]
|
||||
}]
|
||||
}]
|
||||
}
|
||||
with open(json_file, "w", encoding="utf-8") as f_w:
|
||||
f_w.write(json.dumps(jdict))
|
||||
|
||||
def runTest(self):
|
||||
self.initLog()
|
||||
self.genInsertJsonFile(32, 100, 100000, 1)
|
||||
logger.info('result of insert_perf with 32 threads and 1 batch_size:')
|
||||
self.exec_local_cmd(f'{self.perfMonitorBin} -f insert.json')
|
||||
time.sleep(self.sleep_time)
|
||||
self.genInsertJsonFile(32, 500, 1000000, 1000)
|
||||
logger.info('result of insert_perf with 32 threads and 1000 batch_size:')
|
||||
self.exec_local_cmd(f'{self.perfMonitorBin} -f insert.json')
|
||||
time.sleep(self.sleep_time)
|
||||
|
||||
for query_sql in self.sql_list:
|
||||
self.genQueryJsonFile(query_sql)
|
||||
self.exec_local_cmd(f'{self.taosBenchmarkBin} -f query.json > tmp.log')
|
||||
res = self.exec_local_cmd('grep -Eo \'\<Spent.+s\>\' tmp.log |grep -v \'total queries\' |awk \'{sum+=$2}END{print "Average=",sum/NR,"s"}\'')
|
||||
logger.info(query_sql)
|
||||
logger.info(res)
|
||||
# time.sleep(self.sleep_time)
|
||||
|
||||
if __name__ == '__main__':
|
||||
runPerf = HttpPerfCompard()
|
||||
# runPerf.genQueryJsonFile('select * from test')
|
||||
runPerf.runTest()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in a new issue