【 在 callmebbser 的大作中提到: 】
: 一个通道1秒才几百K的数据,完全不是什么大数据量。生产-消费者模式,后台接收、处
: 理,不至于忙不过来。
: 大概率还是新手、初学者写得代码太小学生了。
: ...................
架构的确不太行。被难住了。请高手支招:)
实际上数据量比较大,打底是一个基础线程base在用无锁队列收集16个通道的数据+保存数据到数据库A,大概是10分钟不到4个G的数据1700万+*16个double类型的浮点数(有效数字保存为小数点后8位)。这块目前还没有发现问题,因为没有涉及浮点数的运算,连续跑10多G数据还好。然后是叠加新的16个Reconstruction线程,每个通道的线程预期同时要在0.3s内从前面的数据库A取完数据后完成5万个double类型浮点数的运算+保存到另外一个数据库B,叠加Reconstruction这块会影响到前面的基础线程,30分钟会停1s,30分钟的Reconstruction的数据量大概是3G附近,1s的停顿会造成约25K个数据的丢失。要求是base和Reconstruction两大块都是连续24小时跑,停的时间不能超过10us.没太明白为啥会出现停顿。目前还是怀疑架构不合理。试了把Reconstruction数据保存为double数组也还没达成目标。后面还要再叠加另外一个double浮点数运算的功能(数据量会小很多),还有算法模块线程和仿真线程,感觉架构吃不消。不过能够先解决前面两个base+Reconstruction并存24小时无缝运行也是很好的。
--
FROM 120.41.215.*