开源SDN系统Tungsten Fabric面临数据产生过多问题。
经排查,产生数据多出自analytics组件的Cassandra数据库()。很多分析数据会存储至Cassandra库,并持久化处理。
没有特殊调整的话,目录在
/var/lib/docker/volumes/analytics_database_analytics_cassandra/_data/ContrailAnalyticsCql
两个目录文件很大
其中messagetable增长很慢,但是stattablev4目录增长很快,主要是里面的.db文件增长超快,每天上G的量小意思。
数据增长过快会导致分区硬盘写满,一旦写满,会导致rabbitmq阻塞,进而导致整个TF服务宕机。
处理方法一、清理Cassandra持久化的db文件
# coding=utf-8
import subprocess
import datetimedef execute(cmd, shell=False, cwd=None):popen_obj = subprocess.Popen(cmd, shell=shell, cwd=cwd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)popen_obj.wait()ret, err = popen_obj.communicate()ret = ret.decode("utf-8").strip()err = err.decode("utf-8").strip()return ret, errif __name__ == '__main__':now = datetime.datetime.now()cur_month = str(now.month) + "月"cur_day = str(now.day)ret, err = execute(['ls', '-lrtS'])for i in ret.split("\n"):temp = i.split()if len(temp) != 9:continuesize = temp[4]month = temp[5]day = temp[6]name = temp[8]if int(size) > 10*1024*1024:if month != cur_month and day != cur_day:print(str(int(int(size) / 1024 / 1024)) + "MB-" + month + "-" + day + "-" + name+"(moved)")print (execute(["mv", name, "/home/analytics_database_analytics_cassandra-BAKup/230504"]))else:print(str(int(int(size) / 1024 / 1024)) + "MB-" + month + "-" + day + "-" + name)
方法二、直接进analytics的Cassandra删原有数据
因为删除的是分析数据,不涉及系统配置等,不影响TF正常工作。
目前处理办法这两种,欢迎批评指正1