저는 Node.js를 백엔드로 사용하여 물리 기반 게임용 온라인 서버를 실행하고 있습니다. 현재 서버는 다음 틱이 실행되기 전까지 한 번에 10개의 게임/세계를 처리할 수 있습니다.
이런 점을 염두에 두고 빡빡한 일정을 사용했습니다.나노 타이머이렇게 하면 세계 단계가 서로 간섭하지 않지만 순서는 하나의 프로세서에서만 실행할 수 있음을 의미하므로 AWS 인스턴스의 CPU 사용률은 약 55%에 불과합니다.
나는 사용하기로 결정했다작업 세트내 인스턴스에서 두 개의 프로세서를 사용하는 것이 좋은 방법이겠지만, 때로는 다른 외부 프로세스가 실행 중이고 세상이 때때로 몇 초 동안 처리가 차단되는 경우가 있다고 생각합니다.
이런 일이 발생하지 않도록 하려면 어떻게 해야 합니까? 두 개의 프로세서(작업 세트 없이)를 사용하면 월드 세트는 잘 실행되지만 프로세서의 55%만 사용하므로 매우 비쌉니다.
답변1
먼저 서버에서 실행되는 프로세스의 우선순위를 확인하겠습니다.
ps -eo pid,ppid,ni,comm
그런 다음 Node.js 프로세스의 Nice 값을 가장 높은 값으로 변경하고 개선 사항이 있는지 확인합니다.
renice -n -12 -p (node.js의 PID)