Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

새로운 언어및 플래폼 전환으로 극한 상황에서의 생존기를 히스토리화 한내용입니다. 


설계

Image Added

REST 설계

Image Added

기존 실시간 처리되는 저수준 패킷들을 모두 Rest화를 합니다.

실시간처리를 어떻게 응답을 기다려야하는 Rest와 성능을 유지하면서  설계를 해야할지가

고민이며 웹프레임워크의 튜닝요소를 깊게 살펴보는것에서부터 시작합니다.

URL : https://www.playframework.com/documentation/2.1.0/ThreadPools


웹소켓 설계

Image Added

실시간처리에 있어서 Rest는 적합하지 않습니다. Rest호출 횟수를 줄이기위해

웹소켓을 보조적으로 사용을 하였습니다. 보통 동접3만 초당 천번이상의 Request가

필요한 정보다라고 측정이되면 웹소켓으로의 전환이 필요합니다.


고성능 통신 라이브러리인 자바-네티를 사용하는 Atmosphere를 사용하였습니다.

URL : https://github.com/Atmosphere


성능튜닝


설계된대로 개발이 완료되었으며, 기존 사용자+30% 를 모두 커버할수 있는지? 검증을하는것은 

개발만큼 많은 시간이 소요가 되었습니다.


3만명 가상 동접의 Load테스트 TPS 목표와 실제 측정 자료

...

TestDOCNote
Object Trace Test at 1 Action측정자료1액션당 변화량 측정
Object Trace Test at NoAction측정자료AKKA/Atmosphere/Our Class Object 비활동 베이스 변화량 측정
Object Trace Test at NoAction in chatServer아무 활동 안하는 Chat 서버의 메모리 변화량이 비정상으로 보임,일반적 GC 활동으로 잠정 결론
MemUsage측정자료Total/.net/JavaHeap/JavaPermgen/Unused+unknown(JNI)
Diff Dump측정자료test Lobby API in a simple scenario (send a few requests), make 3 memory dumps (before/during/after) and check Retained memory
Trace ThreadLobby API 에서 Topic 관련 쓰레드가 , 비활동중임에도 불구하고 Running 상태가 반복됨 ( 정상적인 쓰레드 활동인지 체크해야함),해결반안 ActorSystem을 다중으로 사용하지말고, Event Bus로 전환 , AKKA의 오브젝트가 많아 진것도 이로인한 디펙인듯 보임
SSL vs None SSLSSL의 최초 커넥션타임이 길고,약간의 메모리증가 무시할수 있는수준의 약간의 메모리증가
JNI Call TestJNI 는 충분히 빠름 : Lock블락이 포함된 C# 코드를 jni를 통해 5000번 콜한게 20ms이내에 완료됨logger.debug( “PerformTestJNI ProcessedTime: ” + Long.toString(processTime) )

...