1

我有一个包含 6 个以上进程的爬虫。一半的进程是抓取网络的大师,当他们找到工作时,他们将其放入jobs集合中。在大多数情况下,大师一次保存 100 个工作(我的意思是他们获得 100 个工作并尽可能快地分别保存每个工作。

进程的后半部分是从属进程,它不断检查是否有某种类型的新作业可供他使用——如果是,则标记它们in_process(使用 findOneAndUpdate 完成),然后处理该作业并将结果保存在另一个集合中。

此外,有时主进程必须从表中读取大量数据jobs以进行同步。

所以总结一下db上有很多读操作和写操作。当数据库很小的时候它工作正常但是现在当我有大约 700k 工作记录时(工作文件很小,它有 8 个字段并且有适当的索引/复合索引)我的数据库松弛。我可以在显示“统计”页面时观察到它,该页面基本上在count某些条件下(在索引字段上)执行 ~16 次操作。

当主/从进程未运行时,统计页面会在 2 秒后显示。当主/从运行时,同一页面显示大约 1 分钟,有时根本不显示(超时)。

那么我怎样才能让我的数据库每秒处理更多的请求呢?我必须复制它吗?

4

0 回答 0