1

使用 perl 脚本插入了 900 万条记录文件。由于在插入之前需要对每条记录进行一些处理,因此没有使用批量插入/mongoimport。

该程序需要 40 分钟才能完成,但由于某种原因,它会时不时地暂停(被换掉?),因此运行时间会增加一倍、三倍,有时甚至会变得难以忍受。我有 7 GB RAM,当我使用 free -m 检查时,它说程序运行时我有大约 5 GB 的可用 RAM。我没有运行任何消耗资源的进程。这种缓慢的原因是什么?是mongo问题还是操作系统问题?我该如何解决这个问题?谢谢你。

4

1 回答 1

3

默认情况下,Mongo 每分钟将写入与磁盘同步,因此虽然插入速度很快,但每分钟都必须将它们刷新到磁盘上,从而导致 I/O 增加。这会导致大约每分钟减速。

您可以将默认设置更改为更高,但在断电的情况下您会丢失数据,或者您可以每秒 fsync - 在这种情况下,整个操作会慢得多,但
速度会持续。

于 2013-07-02T15:24:31.783 回答