首页 新闻 搜索 专区 学院

C# 同时向磁盘写多个日志文件代价大吗

0
悬赏园豆:20 [已解决问题] 解决于 2021-01-08 18:45

我要跟踪设备的运行情况,所以我有很多日志信息要写到本地磁盘上,之前我是将其放到一个文件中的,但是随着设备越来越多,设备的标签信息就变得非常的冗余,现在我一个日志文件1.5G+,大部分都是重复的标签信息,打都打不开了,我只能写了个解析工具去解析展示,但是依然很慢,于是我就想要按照每个设备单独给他们写一个日志文件,这样就可以大幅度降低日志的大小,但是我记得之前学习计算机的时候好像说过,磁盘IO的读写代价是很大的,之前我写文件是用FileStrem以流的形式顺序读写的,那么现在如果我分成1000个文件来回写文件,磁盘的不停的来回寻址肯定会消耗额外的资源,我自己写了段测试代码进行了测试判断,发现确实写多个文件要比写一个文件慢很多,但是有的时候10倍的差距,有的时候2倍的差距,有的时候又差不多(估摸着是异步的问题)。。。有没有大佬帮忙分析下啊

WmW的主页 WmW | 初学一级 | 园豆:34
提问于:2021-01-07 11:52
< >
分享
最佳答案
0

”每个设备单独给他们写一个日志文件“,这个方案也会随着时间文件会越来越大,
可以按每天一个文件这样写,比如每天按日期新建文件 ‘log_2021-01-08’ 这样所有设备一天的日志写入一个文件
如果日志很多,也可以按每小时一个文件

收获园豆:20
电磁魔王喵喵 | 小虾三级 |园豆:1319 | 2021-01-07 12:17

之前就是按照每天写的日志,结果一天就1.5G了

WmW | 园豆:34 (初学一级) | 2021-01-07 12:22

按照小时写,日志就太零碎了,查看不方便

WmW | 园豆:34 (初学一级) | 2021-01-07 12:26

@WmW: 那你需要一套 日志处理、分析服务了,这个有专门处理日志的程序可以用

电磁魔王喵喵 | 园豆:1319 (小虾三级) | 2021-01-07 12:35

你为了看这个 1.5G 的 日志,写了个 ‘解析工具去解析展示’ ,这个就是一个简单的 日志分析程序了,你可以找下别人写的比较完善的日志分析程序

电磁魔王喵喵 | 园豆:1319 (小虾三级) | 2021-01-07 12:41

@电磁魔王喵喵: 好的,谢谢

WmW | 园豆:34 (初学一级) | 2021-01-08 18:44
其他回答(4)
0

你把日记写道数据库不行吗?又方便看,又方便记录

不知道风往哪儿吹 | 园豆:1378 (小虾三级) | 2021-01-07 12:10

数据量比较大,每个服务器上,每天都有1.5G的日志,日志只保留5天的,数据库用起来赶紧太麻烦了,之前有考虑过用sqlite,但是要折腾事务之类的调优性能,就放弃了

支持(0) 反对(0) WmW | 园豆:34 (初学一级) | 2021-01-07 12:25
0

可以按照固定大小分文件

Tom.汤 | 园豆:2189 (老鸟四级) | 2021-01-07 12:51
0

你自己拷贝小文件或者同时多个文件拷贝...这不都是明显的低于单文件的效能吗。磁盘是块设备,队列方式处理,每次处理要寻址,你那么搞明显降低进一步拉低速率。你可以按照尺寸拆文件,策略也可以多样,那么你可以内存缓存100MB(或者进一步分块,比如迅雷你能看到类似这个设置,就是这个意思)然后写文件...等等方式。

花飘水流兮 | 园豆:12421 (专家六级) | 2021-01-07 14:28
0

一天1.5G大小还好吧。挺小的。本地磁盘没问题,只是查看的时候可能要借助工具了

flyfishing | 园豆:915 (小虾三级) | 2021-01-07 15:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册