커서가없는 커서가 달린 컬렉션 (mongodb)을 실행 중입니다. 그것은 갑자기, 20-300 초 후에 100 % cpu로 점프되고 몽고 스탯은 getmore
이 완전히 멈출 때까지 잘 돌아갑니다. Epoll 버그 (?)가 100 % CPU를 소비합니다 (Python, PyMongo, Tornado)
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 혼란을 일으키는 것 같다.
하지만 무엇을 의미합니까? (힌트 here 아마도?) 무슨 일이 일어나고 어떻게 해결할 수 있습니까?
이 가장 가능성이 epoll 파일을 트리거하는 코드는 다음과 같습니다
(threading.thread()
와) 별도의 스레드에서 실행
while WSHandler.cursor.alive:
try:
doc = WSHandler.cursor.next()
.
(I 토네이도 웹 소켓, DB에 삽입하기위한 세 가지 MongoDB를 스크립트, 커서를 미행 하나의 스크립트를 사용하고 있습니다. cprofile 명령은 미행 스크립트에서입니다.)