Thread :: Pool :: Simple自然比Thread :: Pool慢,还是我的错?

时间:2011-10-20 17:22:55

标签: linux perl threadpool

我们在最新版本的Ubuntu上构建Thread :: Pool时遇到了麻烦,因此我们重写了代码以使用Thread :: Pool :: Simple,因为Perl模块预先打包了分发版。

但是,我们发现无论我们在池中运行了多少线程,它都无法跟上消息加载的速度。实际上,它的运行速度比以前慢了10倍。

我快速阅读了Thread :: Pool :: Simple代码并且有一件事突然发现:它对yield()进行了大量调用,这在Linux 2.6 / 3.0系统中是一个非常糟糕的想法。

我们的小脚本所做的是从ActiveMQ消息队列中读取消息并将它们处理到我们的数据库系统中。使用Thread :: Pool可以很容易地保持连接,建立8个DB连接并并行写入。使用Thread :: Pool :: Simple它似乎最初起作用,但队列长度一直在上升,因为它无法跟上。

有没有其他人有这两个版本的Perl线程池的经验? 我使用Thread :: Pool :: Simple做出了一些明显的错误吗?

0 个答案:

没有答案