150000 (150k) packet/sec 를 처리하는 서버
By SeukWon Kang
https://github.com/kasworld/massecho
를 조금 더 이리 저리 수정해 봤습니다.
각 connection이 보내는 초당 패킷수를 100으로 고정한 상태에서 connection 수를 1000 과 1500으로 바꿔가며 테스트 할때
marshaler로 표준 라이브러리의 json 이나 gob를 사용하면 AMD Ryzen 3700X (8c16t) 에서
간단한 echo protocol 을 사용해도
// Echo simple echo
type ReqEcho_data struct {
Msg string
}
// Echo simple echo
type RspEcho_data struct {
Msg string
}
98000 (98k) packet/sec정도가 한계입니다.
이를 messagepack (https://github.com/tinylib/msgp) 으로 바꾸면
처리량이 150000 (150k) packet/sec 정도로 증가합니다.
생각보다 패킷량이 많은 경우 marshaler의 성능이 전체 성능에서 차지하는 비중이 늘어나는 군요.
connection을 64000(64k)로 증가시키고 connection 당 2packet/sec 로 패킷을 보내는 테스트도 성공했습니다.
이경우 처리량은 128000 (128k) packet/sec 정도 가 됩니다.
테스트는 1대의 기계에서 server와 multiclient를 같이 실행 했으므로 server와 multiclient를 분리된 기계로 테스트하면 이론상으로는 위 수치의 2배 까지도 노려 볼수는 있을것 같습니다.
언젠가 제가 만든 서버가 1000000 (1M) packet/sec를 달성하는 날이 오면 좋겠습니다.