241213 TIL - oreno turn wk5 (5)

LIHA·2024년 12월 13일
0

내일배움캠프

목록 보기
132/136
post-thumbnail

튜터님의 피드백 (오전)

이벤트 루프랑 액터 모델을 비교했는데 돌리다 보니 유의미한 그래프가 나오더라.
-> CPU 사용량이나 메모리를 볼 수 있었으면 좋겠다.

제이미터로 보는 레이턴시

이건 크게 의미가 없는 것 같다. onConnection.js / server.js에서 각각 찍어볼까 싶었는데... 🤔

docker compose로 빌드하는 법? docker-compose up --build

VS Code 콘솔에다가 docker-compose up --build 를 쳤더니, 예은님이 미리 설정해주신 세팅대로 무언가 좌좌좌좍 올라가면서 알아서 돌아갔다.

--build 는 보이는 프론트에서 생성하고 빌드하게 동작 하는거고, -d를 하면 백그라운드에서 돌아가게 해준다고.

우와우와우와 이게뭐야! 뭔가 좌라락 올라가더니 도커에 뭐가 생겼다.

빠밤.

JMeter의 사용목적

우리 서버가 감당할수 있는 최대 동접자수를 측정하고 싶은 것.

로비 서버에서 측정할 것

~ createRoom 까지만 로비서버에서 가능. 이 이후로는 게임 서버로 옮겨감

게임 서버에서 측정할 것

~ createRoom 이후의 로직은 여기서

CPU 사용량이 400%가 되었다! - 도커 컴포즈에서 CPU 성능을 제한해서 리빌드

위와 같이 설정해 주었다.

그랬더니 이젠 mysql이 터지네! 이야호!😭

대강 정리해보는 쓰레드 수별 CPU 사용량 (무한루프)

Ramp-up period는 쓰레드 수와 동일하게 설정

쓰레드 수CPU 사용량
150%
1051%
10050.3%

유정 튜터님께 여쭤본 JMeter - 저녁 피드백

로비서버를 늘려보면 어떨까?

JMeter를 껐는데도 네트워크I/O가 늘어나는건 소켓 처리하느라 병목이 일어나는 것일 수도 있다.

레이턴시에 크게 유의미한 값이 안나온다 (계속 0) -> 터질때까지 패킷을 쏴보자


JMeter 테스트 결과 모음

쓰레드를 고정하지 않았을 때

쓰레드 1000개일 때의 응답시간

이야호! 제이미터가 비명을 지른다. 그리고 그때의 도커 상태.

쓰레드 1개일 때의 응답시간

쓰레드 100, * ramp-up period 60초, 수명주기 180초 고정

메모리 256MB

  • CPU 25%, 메모리 256MB (위의 이전 테스트는 50%, 512MB)
    -> 거의 메모리를 한계치까지 긁어썼음
  • CPU 15%, 메모리 256MB
    -> 얘도 거의 메모리 천장

  • CPU 10%, 메모리 256MB
    -> 얘도 메모리 천장

메모리 128MB

이야호 1분만에 바로 터졌다!

  • CPU 10%, 메모리 128MB


터지는 지점을 발견했으니 CPU 점유율을 다시 높여주자

그래도 터졌다! 이야호!

  • CPU 25%, 메모리 128MB
  • CPU 25%, 메모리 200MB

나를 반겨주는 박살난 도커.

쓰레드 수 50

그래도 터졌다!

  • CPU 10%, 메모리 128MB

쓰레드 수 25

그래도 터졌다!

  • CPU 10%, 메모리 128MB

쓰레드 수 15

그래도 터졌다!

  • CPU 10%, 메모리 128MB


메모리를 다시 256MB로 늘려주었다

쓰레드 수 15

  • CPU 10%, 메모리 256MB
    -> 터지지 않고 5분의 테스팅을 견뎌주었다.


아무것도 안해도 기본 메모리를 60MB 정도 먹고있다는 것을 깨달았다!!

쓰레드가 얼마든 간에 메모리는 꽉채워 쓴다 - 원인을 찾아보자

쓰레드 수 1, 램프업 주기 1

  • CPU 10%, 메모리 256MB

    -> 터지진 않고 응답시간도 스무스 하긴 한데, 메모리는 여전히 꽉꽉 냠냠 중임.

  • CPU 10%, 메모리 512MB

    -> 여전히 냠냠쩝쩝 중

메모리 누수를 잡았다

out.close와 socket.close의 주석 해제

그래서 이제 제이미터가 요청을 쏘고 나면 연결이 끊어진다.
이전에 이걸 주석처리 했던 이유가 연속으로 요청이 가지 않아서 였던 것 같은데, 지금은 잘 가네. 왜지?🤔

Same User On Each Iteration?

-> 이건 딱히 영향이 없었다.

정답은 주석 해제가 맞았다

소켓을 닫아주지 않았더니 다시 치솟는 메모리. 끼야호!

bsh.Interpreter 재설정을 안하면 1초, 하면 30초 뒤에 꺼진다🤯

2024-12-14 00:26:41,204 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import java.io.OutputStream; import java.net.Socket; import org.apache.jmeter.ut . . . '' : Object constructor

2024-12-14 00:26:41,205 WARN o.a.j.p.j.s.BeanShellSampler: Exception executing script. org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import java.io.OutputStream; import java.net.Socket; import org.apache.jmeter.ut . . . '' : Object constructor

이 두 메시지와 함께 JMeter는 파업을 하고 마는데...
Chat GPT에게 물어보니 다음과 같은 답변을 주었다.

뭐라는거야? 😡

profile
갑자기 왜 춤춰?

0개의 댓글