포도가게의 개발일지

heartalk stress test 본문

프로젝트

heartalk stress test

grape.store 2021. 12. 4. 19:53
반응형

매칭 부하 테스트

 

Local test

 

10초에 방 10개 60명 / 1초에 방 1개 -> 성공

10초에 방 100개 600명 / 1초에 방 1개  -> 95개 10duration 동안 전부 송신이 안돼는거같음 터미널 1개

10초에 방 164개 약 1000명 10 duration 동안 전부 송신이 안되는거같음 터미널 2개

10초에 방 171개 약 1000명 10 duration 동안 전부 송신이 안되는거같음 터미널 3개 socket 한계?

 

 

 

AWS test

 

초당 12개 소켓 10초간 하면 뻗음 Socket 10 duration 12개 부터 ec2 작동안함 왜지? 10개까지는 작동 -> socket concurrent가 hardware에 영향을 많이 받는다했었음

 

 

 

12/05 

 

20duration 10user create = 200

방 26개 생성  = 150명

 

-> 랜덤 이름 생성 수정 -> uuid로 수정

20duration 10user create = 200

방 28개 생성  = 168명

aws test

 

초당유저 10
디짐

초당 30 바로죽음

 

초당 15명 연결시

4개만들고 디짐

60개 socket 통신중 56개만 들어옴 근데 그룹이 14개?  -> node 버전 17.2 최신버전 깔려있음 -> 16.13으로 내리고 안정적으로 됨 버전 호환성 문제라고 생각됨 찾을 예정

 

초당 6명접속 1개 방만들어짐
초당 6명 접속 100번째 방 생성

 

12/06 일 test 진행

aws stress server test node version 16.1.3 1duraton 12 create user

매칭 테스트
매칭 100개 생성됬을때
매칭중 메모리 사용량 및 cpu 사용량
stable 함 초당 12명 유저 생성 소화

aws stress server test node version 16.1.3 1duraton 16 create user

뻗음
초당 request 소화 못함

swap disk 해볼까? 메모리 문제라면? 초당 16유저 생성 -> swap disk 설정 -> 해결

 

aws stress server test node version 16.1.3 1duraton 30 create user

꾸역꾸역하다가 디짐 swap disk 너무 느림
메모리 부족으로 swap disk 폭풍 상승

 

aws stress server test node version 16.1.3 1duraton 20 create user

죽지는 않지만 전부 처리는 못함

 

 

 

12/07일 stress test -> 20명이 넘으면 네트워크가 죽는 문제는 서버문제보다 개인 pc 문제였다

-> test tool를 t2.micro에 옮겨 -> main target server에 부하를 주었다

-> 하지만 stress test server도 1sec당 부하를 주는데 한계가 있었다 약 200~300사이가 연산 한계였나보다

-> 그래서 유저가 머무는 시간을 늘리고 duration을 길게주어 10000명을 맞추었다.

 

첫번째 매칭된 group

 

최종적으로 1626그룹 생성 socket 10000개 연결되어있는 상태
동시 접속 유지후 연결 끊기는 소켓들

 

 

정리 - 2021 / 12 / 07

test tool: artillery stress tool 사용
  1. 1sec(duration) virtual user 10명까지 문제 없음
  2. 1sec 12명 유저부터 서버가 터져서 연결이 안돼는 줄 알았음
  3. aws memory 확인결과 server 키면 기본 메모리 600mb사용(서버 스펙 t2.micro ram 1gb cpu core 1)
  4. 메모리 부족현상 인줄 알고 swap disk설정 2gb 12-> 20명까지는 증가 아마 이때는 메모리 문제긴 했나보다
  5. 1sec 20명 접속 계속 끊김 (서버 터진줄 알았음) cpu사용량 aws monitoring 보는데 20%로까지 밖에 안올라감
  6. 트래픽 부하? 인가 해서 ngnix 로 트래픽 줄일 수 있나 찾아봄
  7. 트래픽 줄이는건 결국 load balacing -> 분산시키는내용만 있었음 (있을 수 있음 못찾은 걸지도)
  8. socket io 문제인줄 알고 버전 바꿔봤는데 똑같음
  9. socket io 개발 문서 보고 os socket  port & fd tuning함 이론상 socket 50k까지 동접 되야되지만 안됌
  10. ip port -> grapestore.sho:80 으로 일단 보안 처리 함 -> response는 아직 확인안해봄 data는 잘감
  11. node version 17버전이길래 lts 16으로 내림 -> 그땐 socket io 호환성 문제인줄 알았는데 문제 없었던듯
  12. 결국 hardware에는 문제가 없었음 -> 네트워크 문젠가? 찾아봄
  13. 네트워크 찾아봤지만 1gbps(t2.micro spec) 몇백명까지는 소화해야되는데 못함 ;;
  14. 근데 localhost test할때는 2~300명까지 1sec당 처리 잘함  뭐지 ??
  15. wifi 공유기 의심되서 wifi 바꿔봄 -> 똑같음
  16. 그래서 부하를 다른 컴퓨터랑 나눠서 줄려고함 근데 서버 부하중에 다른 pc는 aws pipe broken 안터지고 접속 잘됨
  17. 학교측 네트워크 의심 또는 pc(lap top)에서 특정 트래픽 부하시 차단하는게 아닐까 의심
  18. test tool local -> ubuntu로 올림 aws stress server -> main api server 로 부하로 바꿈
  19. 동시접속자 10000명 중에 5000명처리가 안됨 -> node js에서 제공해주는 profile 이용
  20. profiling시 유독 cpu 갉아먹는 많이 사용되는 function들을 찾아서 없애줌
  21. 동접 10000명 매칭 시스템 부하 테스트 완료 => 총 1639개 시그널 룸 생성 확인

before -> after (개선)

before -> after

'프로젝트' 카테고리의 다른 글

[Node] Chat Server 부하줄이기(분산처리)[1]  (2) 2022.02.07
[Node] Chat Server 부하줄이기(분산처리)[2]  (0) 2022.02.02
Node js profiling  (0) 2021.12.07
heartalk 개발  (0) 2021.11.19
NestJS 초기 명령어(CLI) & 기초  (0) 2021.11.06
Comments