이 글에 추가할 내용도 있습니다. 저는 리소스가 매우 제한적인 시스템(1GB RAM)에서 작은 사이트를 운영하고 있습니다. 유니콘(unicorn) 워커가 2개였는데, 각각이 메모리의 30%를 차지하고 있어 상당한 메모리 스래싱이 발생했습니다. 그래서 워커 수를 2개에서 1개로 줄이기로 했습니다(1개당 약 10개의 동시 연결을 처리할 수 있다고 생각했습니다). 이 변경으로 인해 큰 차이가 생겼으며, 페이지 로딩이 거의 즉시 이루어지고 스와핑이 5~10배(로드되는 내용에 따라 다름) 감소했습니다.
현재 파악되는 단점은 브라우저 업그레이드를 통해 디스코르스를 업데이트할 수 없다는 점입니다. 브라우저를 통해 업데이트를 시도하면 다음과 같은 오류가 발생합니다.
ABORTING, you do not have enough unicorn workers running
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: Not enough workers>
따라서 참고해 주실 점입니다. 유니콘 워커가 1개일 때 브라우저 업그레이드를 수행하는 문제에 대해 디스코르스 팀이 해결하거나 대응할 수 있는지에 대해서는 확실하지 않습니다.
@Falco 다른 관리자분들의 데이터를 살펴봤습니다. 제 이해로는 각 Unicorn이 수신된 연결마다 새로운 프로세스를 포크(fork)하는 것 같습니다. 따라서 기술적으로는 한 번에 하나의 연결만 처리하지만, 각 Unicorn은 여러 동시 사용자를 처리할 수 있습니다.
아래에서 공유된 경험을 바탕으로, 약 8개의 Unicorn이 약 400명의 동시 사용자를 처리할 수 있는 것으로 보입니다.
이를 근거로 볼 때, 각 Unicorn은 약 50명의 동시 사용자를 처리할 수 있는 것으로 보입니다. 물론 RAM과 시스템 리소스는 포크할 수 있는 프로세스 수 등에 영향을 미치기 때문에, 저사양 시스템(1GB)의 경우 1개의 Unicorn 워커가 최소 10명의 동시 사용자를 처리할 수 있다고 가정했습니다.
제 가정과 결론이 완전히 틀린 것일까요? 만약 그렇다면, 시스템 리소스에 따라 각 Unicorn이 처리할 수 있는 동시 사용자 수는 어느 정도일까요? (하한은 1GB, 상한은 적절하다고 판단되는 수준으로 가정해 주세요)