Tungsten Fabric数据量过大问题处理初探

开源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 datetime

def 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, err

if __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:
            continue

        size = 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删原有数据

Tungsten Fabric数据量过大问题处理初探_第1张图片

因为删除的是分析数据,不涉及系统配置等,不影响TF正常工作。

目前处理办法这两种,欢迎批评指正1 

你可能感兴趣的:(运维,运维,网络,TungstenFabric,SDN)