Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Epoll bug(?)消耗100%的CPU(Python、PyMongo、Tornado)_Python_Mongodb_Tornado - Fatal编程技术网

Epoll bug(?)消耗100%的CPU(Python、PyMongo、Tornado)

Epoll bug(?)消耗100%的CPU(Python、PyMongo、Tornado),python,mongodb,tornado,Python,Mongodb,Tornado,我正在运行一个带有可定制游标的capped集合(mongodb)。它运行正常,直到20-300秒后突然跳到100%cpu,mongostat显示getmore完全停止 我在python脚本上创建了cProfile,并发现: 1 0.000 0.000 0.000 0.000 {method 'lstrip' of 'str' objects} 77 0.000 0.000 0.000 0.000 {method 'match' of

我正在运行一个带有可定制游标的capped集合(mongodb)。它运行正常,直到20-300秒后突然跳到100%cpu,mongostat显示
getmore
完全停止

我在python脚本上创建了cProfile,并发现:

    1    0.000    0.000    0.000    0.000 {method 'lstrip' of 'str' objects}
   77    0.000    0.000    0.000    0.000 {method 'match' of '_sre.SRE_Pattern' objects}
   11    0.000    0.000    0.000    0.000 {method 'partition' of 'str' objects}
   34  242.726    7.139  242.726    7.139 {method 'poll' of 'select.epoll' objects}
   12    0.000    0.000    0.000    0.000 {method 'pop' of 'dict' objects}
因此,epoll确实很突出,而其他一切看起来都很正常,这很可能是导致挂断和CPU破坏的原因

但这意味着什么?(可能是暗示?)发生了什么事,我该如何解决

这是最有可能触发epoll的代码:

while WSHandler.cursor.alive:
        try:
            doc = WSHandler.cursor.next()
它在单独的线程中运行(使用
threading.thread()


(我使用的是Tornado WebSocket,三个mongodb脚本用于插入数据库,一个脚本用于跟踪光标。cProfile来自跟踪脚本。)

这是由于在三个不同的脚本中使用Tornado运行三个
ioloop
造成的。这会把
IOLoop
使用的epoll弄得一团糟。解决方法是将所有三个脚本放在一个
IOLoop

从经营一个