我们在通过多个进程序列化文件时面临性能问题。
这是问题所在:我们正在创建多个进程(在分布式计算环境中)来进行计算,然后将每个进程的输出写在一个文件中。主进程使用这些文件,将其合并到内存中并进行进一步的计算。
我们的服务器数量有限。发生的情况是可以在同一台服务器上创建 2-3 个进程。发生这种情况时(在同一台服务器上创建 2-3 个进程),我们会遇到这些进程尝试同时在磁盘上写入\序列化计算文件(文件大小约为 80-90 MB)的情况。发生这种情况时,序列化文件大约需要 3m。在正常情况下,80-90 MB 只需要 30 秒。
我们在性能监视器(和我们的日志计时)中监控了这种情况,并且可以看到由于 2-3 个进程试图同时写入,它所花费的时间大约是正常计时的 6 倍。
任何改善时间(3分钟场景)的建议都值得赞赏。
我们使用 .Net 框架,代码是用 c# 编写的。