为什么EventMachine比Node慢得多?
|
至少在我的情况下。在这里不做一般性陈述。
我已经在Node.js中编写了这个网络爬虫。我想改用Ruby,因此在EventMachine中重新编写了它。由于原始文档位于CoffeeScript中,因此实际上非常容易,并且代码几乎相同,除了在EventMachine中,我实际上可以捕获异常并从异常中恢复(因为我使用的是光纤)。
问题在于,在Node.js代码上不到20秒运行的测试在EventMachine上可能要花费5分钟以上的时间。当我看到连接计数时,几乎看上去它们甚至没有并行运行(它们排成一排,成百上千,然后非常缓慢地向下运行),尽管日志记录显示代码点是并行命中的。
我意识到,没有代码,您将无法真正知道到底发生了什么,但是我只是想知道是否存在某种潜在的差异,我应该放弃,或者它们是否真的应该能够以同样快的速度运行(稍慢一点就可以了),我应该继续尝试找出问题所在。
我做了以下工作,但实际上似乎没有任何作用:
puts \"Running with ulimit: \" + EM.set_descriptor_table_size(60000).to_s
EM.set_effective_user(\'nobody\')
EM.kqueue
哦,我非常确定EventMachine中没有任何阻塞调用。我已经在每一行中梳理了大约10次,以查找可能阻塞的任何内容。我所有的网络呼叫都是EM :: HttpRequest。
没有找到相关结果
已邀请:
1 个回复
赐黄