최대 1 분 소요

서버를 만들며 다시 해본 테스트 결과이다.

저번 테스트와는 다르게 서버컴퓨터와 클라이언트컴퓨터를 분리해서 테스트했다. 서버는 운영체제는 CentOS 7, 인텔 i7 8코어, 16GB 메모리를 장착한 컴퓨터이다. 리눅스에서 gcc 4.8.2로 빌드되었다.

100개의 커넥션으로 100ms마다 5000개의 패킷을 전송한 결과는 다음과 같다.

송수신을 합쳐 거의 70만~90만개의 패킷을 처리했다. 서버가 받는 패킷보다 내보내는 성능이 현저히 좋지 않았으며 성능이 시간의 흐름에 따라 굉장히 떨어졌다가 굉장히 올라갔다가를 반복했다. 이 때 서버의 CPU는 8개 코어가 거의 95% 이상의 점유율을 보여줬다. 코어를 거의 다 사용하는데 이건 좀 과한게 아닌가 싶다.

그리고 테스트 경우에 따라 응답패킷이 거의 안 오는 경우도 발생했는데 이것은 시간을 두고 찾아봐야할 것 같다.

조금 더 개선하면 나아지지 않을까 생각이 든다.

2016년 6월 3일 추가.

Google tcmalloc을 적용했으며 테스트 환경은 위와 같다.

테스트하면서 가장 적절한 수치를 찾아보려고 했는데 대략 3000번 정도의 패킷은 무난히 처리할 수 있었다. 이 수치를 5000, 4000, 3000으로 낮춰가며 테스트했는데 5000, 4000에서는 시간이 지날수록 패킷 처리량이 감소하는 등의 문제가 생겼고 3000에서는 부담 없이 계속적으로 처리할 수 있었다. 이때 초당 처리한 메시지수는 60만 정도였다.

하나 알게된 사실은 메모리 누수를 발견했다. 시간이 지날수록 서버의 메모리 사용량이 계속적으로 증가했는데 아직 원인을 찾을 수 없다.

카테고리:

업데이트: