2014-11-08 2 views
0

그래서 다중 코어 시스템에서 NodeJS로 얼마나 많은 WebWorker 스레드 (https://github.com/audreyt/node-webworker-threads)가 CPU 집중적 인 작업을 향상시킬 수 있는지 테스트하려고합니다.WebWorker 스레드를 사용한 높은로드 동시성 테스트 중 세그먼트 오류

직장에서 할당 된 단일 코어가있는 VM에서이 작업이 실제로 수행되었지만 4 코어가있는 내 집 VM에서 시도했을 때 15-20 개 요청 후에 분할 오류가 발생했습니다.

내가 https://github.com/WakeskaterX/NodeThreading.git

나는 내가 세그먼트 폴트를 얻고 이유를 조각을 제거하는 시도에서 내 프로젝트를 가지고 있지만, 심지어 정적 인 숫자를 반환하는 것은 15 ~ 20 개 요청 후 세그먼트 폴트를 발생했습니다. 내가 실행하고있어 loadtest 명령에 대한

:

loadtest -c 4 -t 20 http://localhost:3030/fib?num=30 

동 기적 즉시 웹 노동자 그것을 분할 오류 핵심 덤프 안타하지만, 피보나치 시퀀스를 계산할 때 그것은 잘 실행됩니다. 아마 이것은 백엔드의 WebWorker-Threads 코드와 관련이 있습니다.하지만 왜 그런 일이 일어나고 있는지, 그리고 어떻게 디버그 할 수 있는지 궁금해하고 있습니다. 그래서 nodej에서 백그라운드 스레딩을 테스트 할 수 있습니다.

답변

1

이것은 가변 수명 문제입니다. 일반적으로 장시간 작업자는 어휘 변수 대신 객체에 할당해야합니다. 후자는 범위가 끝나면 쓰레기 수거됩니다.

이 문제를 해결하는 풀 요청에 대해서는 https://github.com/WakeskaterX/NodeThreading/pull/1을 참조하십시오.

+0

이렇게하면 Seg Fault 문제가 해결되었습니다. 나는 확실히 풀만 사용해야한다. 이것은 내 VM의 모든 메모리를 태우고 제한된 양의 스레드에 위임 할 필요가있다. 이것에 대해 다시 한번 감사드립니다! – WakeskaterX

관련 문제