-
Notifications
You must be signed in to change notification settings - Fork 1
redis pusub app server hang 문제 #22
Comments
뭔가 알거같은게 https://redis.io/docs/reference/optimization/benchmarks/ 보면 수신은 ws의 요청 값을 검사하고 redis에 publish 하는데 이걸 자체적으로 mpsc 사용해서 버퍼링 처리하고 여러개의 전달 하는 채팅건을 리스트로 만들어서 publish 횟수를 줄이면 되지 않을까 생각함 이건 수신쪽도 바뀌는 거긴해 |
e9511a3 에서 mpsc publish 버퍼링 적용했는데 150MB 까지는 간거 같음 그리고 CPU 사용률이 3배 정도 높아짐
위 정도 일떄 hang 문제 발생했고 앱서버 로그 보면
마지막 publish 가 몰려서 버퍼링되었고 redis에 publish 명령 날리고 서버 행됬음 |
|
d8bc2a6 redis 제거하고 테스트 해봤는데 그래도 죽어 오 그럼 이번엔 axum 없이 해보자 이게 network io 한계에 도달하면 걍 서버가 죽나? 원래? 네트워크 OS 에서 어캐 처리하나 봐야되나ㅋㅋ |
https://channel.io/ko/blog/real-time-chat-server-2-redis-pub-sub 채널톡이 싱글 레디스 클러스터로 pub sub 사용했다가 nats 로 마이그레이션 하려고 하는듯 근데 nats는 클러스터로 세팅하고 pub sub 처리도 가능 하기 때문에 redis 보다 더 scalable 함 pub sub 용으로는 이게 더 적당 한거 같기도 하네 |
여러명의 유저 적은 채팅
이상없음 50MB 까지 갔도 웹 서버 안죽음 커넥션 다끊어도 ㄱㅊ음 웹페이지 응답도 빠르고 웹 브라우저에서 ws 응답도 빠름 4천명의 유저 채팅 전파 10ms 이내로 끝남
##적은 유저 많은 채팅
초당 300개 정도의 채팅은 문제없이 처리함 50MB 정도임 근데 그이상 하면 어느순간 서버 동작안함 CPU 120% 까지 올라가다가 그냥 낮아짐 웹페이지 응답도 없고 기다려봐도 회복안됨 웹소켓도 어느순간 응답없음 근데 이렇게 되기 직전까지만 해도 웹 브라우저에서 웹소켓 응답 매우 빠름 접속한 클라수가 적어서 전체 전파 처리 1ms 미만임
server stuck 될때 서버 로그
보다시피 아예 로그가 그냥 없음 cpu 사용률 낮아지고 io 성능도 안나오고 그냥 코드가 실행 안되는거 같음 deadlock 인가? 일단 redis 클라로 pubsub만 테스트 해봐야겠음 서버 띄워서 소켓에 전달은 안하고 그냥 로그만 찍게 해서 어캐되나 보고
계속 publish 하는 클라로 테스트 해봐야겠음
The text was updated successfully, but these errors were encountered: