지연시간 극복 {swjungle}{recre}

- week14-18 {swjungle}{my own weapon}{nestjs, socketio}

생각해본 api들이다.

// server -> player
ping: {
	server_ts: number
}

// player -> server
ping.ack: {
	server_ts: number,
	client_ts: number
}

// server -> player
pong: {
	server_ts: number,
	client_ts: number,
	server_ack_ts: number
}

수상할정도로 지연시간이 크게 나온다. 다음은 지연시간 계산결과를 측정한 뒤 각종 통계를 내본 결과다. 통계내는 numpy 코드는 GPT한테 부탁했다.

평균: 67.1118869296637ms
최소: 5.526527002512012ms
최대: 348.7045019865036ms
99% 백분위수: 200.6986215996742ms
95% 백분위수: 124.32711260021168ms

아래는 EC2에 올려서 IMDB를 사용했을때 결과

평균: 59.65141448760648ms
최소: 0.4221919924020767ms
최대: 405.82011999189854ms
99% 백분위수: 179.18522739261363ms
95% 백분위수: 115.07675500215555ms

1 way latency

생각해보니까, 위의 블로그가 소개해준 지연시간은 서버 - 플레이어 - 서버 - 플레이어 3-way 이벤트에 걸리는 시간을 측정한 거고, 플레이어가 run 요청을 쏴서 서버가 받기까지의 시간이 우리가 익히 아는 지연시간이었다.

Pasted image 20231205193318.png