refs:
mongodb csharp驱动
http://mongodb.github.io/mongo-csharp-driver/2.3/reference/driver/connecting/
mongodb client 工具 Robo 3T:
https://docs.mongodb.com/manual/mongo/
refs4:
https://docs.mongodb.com/ecosystem/use-cases/storing-log-data/
问题:
在一个大并发的日志系统中,由于需要对每个设备链接进行日志记录,原来使用的是以设备名为文件名的多文件记录日志。
这样做导致磁盘读写频率很高,而且这些动作在链接的处理中,影响连接的效率。理想状况当然是把众多日志存到一个文件里,
类似log4j/log4net等,但这样不方便以设备为单位查看日志。
一)一种方案,以设备名为键值key,日志为value,存到字典中,满足一定容量后写磁盘。这其中需要一个是定时写磁盘,因为有些连接可能一直是比较少日志的;还有一种是满足一定大小日志开始写磁盘,防止内存使用过多而不够。
所以,定时器作为定时写机制,可以考虑设置为5分钟?一次,做2个字典,每次到时间替换写的字典。
另外在每个设备日志添加时,判断写value大小,满足1k或10k?时,清一次设备日志,写入磁盘。
是否会消耗过多内存???
二)方法一主要还是利用内存,把要写的东西缓存起来后一次写入磁盘。后来发现mongodb写入性能较佳,用并发写入似乎也可以,内存消耗比较厉害。于是改写磁盘为写mongodb。refs4中的链接即mongodb官方提供的一种应用场合,记录日志。