当前位置:  开发笔记 > 编程语言 > 正文

如何在不吞噬cpu的情况下进行大量处理?

如何解决《如何在不吞噬cpu的情况下进行大量处理?》经验,为你挑选了1个好方法。

我知道问题标题不是最好的.让我解释.

我做了一个文本处理TON,它将自然语言转换为xml.这些文本文件上传得相当快,并被扔进队列中.从那里将它们逐个拉到后台工作器中,后者调用我们的解析器(使用boost spirit)将文本转换为xml并将相关部分加载到我们的数据库中.

解析器一次可以执行大约100个这样的操作.我在后台工作者上有速率限制器,现在每隔一段时间只轮询我们的队列,所以它的执行速度不是很快.我现在不能抛弃多个后台工作者,因为我的http请求开始掉线 - 后台工作者和网络服务器存在于同一台机器上,我相信这是因为cpu使用率达到80-95%,尽管我们也可以使用更多的ram.

我需要更好地扩展它.你会怎么做呢?

在几个问题的答案:

我们使用亚马逊网络服务,所以购买便宜的额外硬件与产生一个新的亚马逊实例有点不同 - 也许有人做了一些自动生成负载量实例的代码?

我们有一个http服务器,只是将我们的文件填入队列,所以它受影响的唯一原因是因为cpu忙着处理大量的解析相关的东西

虽然我们没有在解析器本身中使用它,但我已经对后台工作者进行了速率限制

我还没有尝试过,但我过去曾经使用它 - 我需要写下一些基准

解析器完全独立于Web服务器 - 我们将nginx/merb作为我们的Web /应用程序服务器,并将一个rake任务调用c ++作为我们的后台工作者 - 但它们确实存在于同一台机器上

Artelius.. 8

也许只是将后台工作者置于较低的调度优先级(例如使用nice)会有所帮助.这意味着您的服务器可以在需要时处理请求,但是当它不忙时,您可以完全了解文本处理.

它可以为你提供比任意背叛后台工作者更多的好处.



1> Artelius..:

也许只是将后台工作者置于较低的调度优先级(例如使用nice)会有所帮助.这意味着您的服务器可以在需要时处理请求,但是当它不忙时,您可以完全了解文本处理.

它可以为你提供比任意背叛后台工作者更多的好处.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有