Workerman이 지원하는 동시 처리량
동시 처리량 개념은 매우 모호하지만, 여기서는 두 가지 정량화 가능한 지표인 동시 연결 수와 동시 요청 수를 통해 설명하겠습니다.
동시 연결 수는 서버가 현재 시점에서 유지하고 있는 총 TCP 연결 수를 의미하며, 이 연결에서 데이터 통신이 이루어지는지는 중요하지 않습니다. 예를 들어, 한 메시지 전송 서버는 백만 개의 장치 연결을 유지할 수 있지만, 연결에서 데이터 통신이 거의 이루어지지 않기 때문에 이 서버의 부하는 거의 0일 수 있습니다. 메모리가 충분하다면 계속해서 연결을 수용할 수 있습니다.
동시 요청 수는 일반적으로 QPS(초당 서버가 처리하는 요청 수)로 측정하며, 현재 시점에서 서버에 몇 개의 TCP 연결이 있는지는 그리 중요하지 않습니다. 예를 들어, 한 서버에 10개의 클라이언트 연결이 있고, 각 클라이언트 연결에서 매초 1만 개의 요청을 보낸다면, 서버는 최소한 10 * 10,000 = 100,000 초당 처리량(QPS)을 지원해야 합니다. 만약 100,000 초당이 이 서버의 한계라면, 각 클라이언트가 서버에 매초 1개의 요청을 보내는 경우 이 서버는 100,000개의 클라이언트를 지원할 수 있습니다.
동시 연결 수는 서버의 메모리에 제한되며, 일반적으로 24GB 메모리를 가진 Workerman 서버는 약 1,200,000 동시 연결을 지원할 수 있습니다.
동시 요청 수는 서버의 CPU 처리 능력에 따라 제한되며, 24코어 Workerman 서버는 450,000 초당 처리량(QPS)을 달성할 수 있습니다. 실제 값은 비즈니스 복잡성과 코드 품질에 따라 다를 수 있습니다.
주의
고동시 처리 상황에서는 event 확장을 설치해야 하며, 설치 및 구성 장을 참조하시기 바랍니다. 또한, Linux 커널을 최적화해야 하며, 특히 프로세스의 열린 파일 수 제한을 조정해야 합니다. 조정 방법은 부록의 커널 튜닝 장을 참조하시기 바랍니다.
압력 테스트 데이터
데이터는 제3의 권위 있는 압력 테스트 기관인 techempower.com의 20회차 압력 테스트에서 왔습니다.
https://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=db&l=zik073-sf
서버 구성:
총 코어 수 14, 총 스레드 수 28, 메모리 32GB, 전용 Cisco 10기가비트 이더넷 스위치
비즈니스 로직:
데이터베이스 쿼리가 포함된 비즈니스, 데이터베이스 pgsql, php8+jit
QPS는 39만 이상입니다.
