비율 계산 편하게 하려고 ('just lurk', 'quiet', 'chatty') 비율을 (15, 75, 10) 에서 (10, 80, 10)으로 변경했어.
지금 채팅 테스트를 할 때, 10초간 테스트 데이터가 생성되고 초당 50명이 채팅방에 참여해.
1초 단위로 봤을 때,
50명 중 5명(10%)은 채팅방에 참여만.
50명 중 40명(80%)은 채팅방 참여 후 5초 뒤 메시지 1회 전송.
50명 중 5명(10%)은 채팅방 참여 후 5초 뒤 10초 동안 초당 메시지 1회 전송.
그래서 지금 세팅에서 총 채팅 메시지 수는 (1(회) * 40(명) + 10(회) * 5(명)) * 10(초) = 900번.
가상의 유저가 만들어 지지 않을 때도 있어서 완벽히 500명의 유저가 동작하는걸 보장하지 않음.
약간의 loss가 있다.
초당 가상 사용자를 2배로 올렸는데 그렇다고 메시지가 2배로 증가하지 않는다.
대략 1000개가 안됨.
// useChatMessage.js 10 line
const THROTTLE_LIMIT = 50;
const BUFFER_LIMIT = 50;
const MESSAGE_LIMIT = 1000;
// useChatMessage.js 33 line
const handleSocketMessage = msg => {
// throttling 적용 X
setMessageList(prev => [...prev, msg]);
// throttling 적용 O
pushBuffer(msg);
onThrottle();
};
위의 값만 변경해가며 측정함.
실험 대상은 message buffer의 유무, throttling 적용 유무로 총 4개의 상황을 가정함.