gpt4 book ai didi

ruby-on-rails-3 - 多次fork会不会影响性能?

转载 作者:行者123 更新时间:2023-11-29 11:50:51 25 4
gpt4 key购买 nike

我需要使用 fastercsv 读取日志文件 (.CSV) 并将其内容保存在数据库中(每个单元格值都是一条记录)。问题是大约有 20-25 个日志文件必须每天读取,而且这些日志文件非常大(每个 CSV 文件超过 7Mb)。我 fork 了阅读过程,这样用户就不必等待很长时间,但仍然阅读 20-25 个这种大小的文件需要时间(超过 2 小时)。现在我想 fork 读取每个文件,即会创建大约 20-25 个子进程,我的问题是我可以这样做吗?如果是,它会影响性能并且 fastercsv 能够处理这个问题吗?例如:

for report in @reports
pid = fork {
.
.
.
}
Process.dispatch(pid)
end

PS:我正在使用 rails 3.0.7,它将在运行在亚马逊大型实例(7.5 GB 内存,4 个 EC2 计算单元(2 个虚拟核心,每个 2 个 EC2 计算单元))中的服务器中运行,850 GB 的本地实例存储,64 位平台)

最佳答案

如果存储全部是本地的(如果你在云中,我不确定你是否可以真的这么说),那么 fork 不太可能提供加速,因为最慢该操作的一部分将是磁盘 I/O(除非您正在对数据进行认真的计算)。通过多个进程访问光盘不会立即加快速度,但我想如果光盘有一个大缓存可能会有所帮助。

此外,7MB 的 CSV 数据并没有那么多 - 如果您找到一种更快的插入数据的方法,您可能会获得更好的加速。一些数据库提供批量加载功能,您可以直接加载格式化数据,或者您可以将每一行变成一个 INSERT 并直接写入数据库的文件。我不知道你目前是怎么做到的,所以这些只是猜测。

当然,说了这么多,唯一确定的方法就是尝试一下!

关于ruby-on-rails-3 - 多次fork会不会影响性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10642773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com