
다음과 같은 특성을 가진 서버가 있습니다.https://www.soyoustart.com/it/offerte/1801sysgame05.xml
프로세서 인텔 i7-4790K
RAM 32GB DDR3 1333MHz
트래픽 무제한 Anti-DDoS 포함
디스크 1x240GB SSD
대역폭 250Mbps
C++로 작성된 실시간 TCP 게임 서버를 처리하기 위해 Ubuntu 서버 기반 컨테이너를 실행하는 Proxmox Linux 배포판을 설치했습니다. 이 서버는 현재 약 1000명의 온라인 사용자에 도달했으며 곧 현재 인구가 두 배로 늘어날 예정입니다. .
문제는 온라인 사용자 수가 850명에 도달하자마자 이상한 성능 "병목 현상"이 발생한다는 것입니다. ~800 이하로 돌아가자마자 병목 현상이 사라집니다. 실제로 일어나는 일은 플레이어가 서버에 연결될 때까지 약 30초를 기다려야 하는 반면, 이미 연결된 플레이어는 아무런 문제(지연 시간 없음, 정지 현상 없음 등)를 경험하고 있다는 것입니다. 이는 네트워크 정체, 한도 제한 또는 동일한 프로세스에 대한 추가 연결을 거부하고 CPU에 압력을 가하는 유사한 것으로 보입니다(아래 스크린샷에서 볼 수 있듯이).
여기에서는 NetData에서 동일한 "패턴"을 발견한 일부 그래프를 수집했습니다. 그만큼Softirqs RCU특히 의미가 있는 것 같지만 정확히 무엇을 의미하는지 모르겠습니다.
Softirqs RCU:
CPU 사용량/압력:
CPU 주파수
CPU 온도
저희 CPU 자체의 결함이라고는 생각하지 않습니다만, 위에서 말씀드린 것처럼 프로세스 제한이나 이와 유사한 문제인 것 같습니다.
무슨 일이 일어나고 있는지 아시나요?
업데이트:
또 다른 관련 그래프
답변1
ulimit를 늘려서 이 문제를 해결했습니다.
내 구체적인 경우 문제는 ulimit를 늘려야 하고(하드 및 소프트 모두) 호스트와 lxc 컨테이너 모두에 대해 /etc/ 폴더 내에 영구적으로 구성되어야 한다는 것입니다.
또한 컨테이너를 권한 있는 컨테이너로 변경했지만 실제로 필요한지 잘 모르겠습니다. 권한 있는 컨테이너에 대해서도 수정하는 방법이 있을 수 있지만 이를 달성할 수 없었습니다.