我要跟踪设备的运行情况,所以我有很多日志信息要写到本地磁盘上,之前我是将其放到一个文件中的,但是随着设备越来越多,设备的标签信息就变得非常的冗余,现在我一个日志文件1.5G+,大部分都是重复的标签信息,打都打不开了,我只能写了个解析工具去解析展示,但是依然很慢,于是我就想要按照每个设备单独给他们写一个日志文件,这样就可以大幅度降低日志的大小,但是我记得之前学习计算机的时候好像说过,磁盘IO的读写代价是很大的,之前我写文件是用FileStrem以流的形式顺序读写的,那么现在如果我分成1000个文件来回写文件,磁盘的不停的来回寻址肯定会消耗额外的资源,我自己写了段测试代码进行了测试判断,发现确实写多个文件要比写一个文件慢很多,但是有的时候10倍的差距,有的时候2倍的差距,有的时候又差不多(估摸着是异步的问题)。。。有没有大佬帮忙分析下啊
”每个设备单独给他们写一个日志文件“,这个方案也会随着时间文件会越来越大,
可以按每天一个文件这样写,比如每天按日期新建文件 ‘log_2021-01-08’ 这样所有设备一天的日志写入一个文件
如果日志很多,也可以按每小时一个文件
之前就是按照每天写的日志,结果一天就1.5G了
按照小时写,日志就太零碎了,查看不方便
@WmW: 那你需要一套 日志处理、分析服务了,这个有专门处理日志的程序可以用
你为了看这个 1.5G 的 日志,写了个 ‘解析工具去解析展示’ ,这个就是一个简单的 日志分析程序了,你可以找下别人写的比较完善的日志分析程序
@电磁魔王喵喵: 好的,谢谢
你把日记写道数据库不行吗?又方便看,又方便记录
数据量比较大,每个服务器上,每天都有1.5G的日志,日志只保留5天的,数据库用起来赶紧太麻烦了,之前有考虑过用sqlite,但是要折腾事务之类的调优性能,就放弃了
可以按照固定大小分文件
你自己拷贝小文件或者同时多个文件拷贝...这不都是明显的低于单文件的效能吗。磁盘是块设备,队列方式处理,每次处理要寻址,你那么搞明显降低进一步拉低速率。你可以按照尺寸拆文件,策略也可以多样,那么你可以内存缓存100MB(或者进一步分块,比如迅雷你能看到类似这个设置,就是这个意思)然后写文件...等等方式。
一天1.5G大小还好吧。挺小的。本地磁盘没问题,只是查看的时候可能要借助工具了