Blog

[Spring][258] 동시성 해결 기법들 Jmeter 부하 성능 테스트

Category
Author
Tags
PinOnMain
1 more property

1. 개요

팀 프로젝트를 진행하며 동시성 문제를 해결하기 위해 다양한 방법들을 사용해 보았으며
이 방법들을 모두 포함한 프로젝트를 AWS를 이용한 서버에 올려서 구동하였다.
서버에서 동시성 부하 테스트를 진행하며 성능을 측정해보았다.

2. 테스트 환경

메인서버 : t2.micro(??)
트래픽(카프카) 서버 : t2.micro(??)
카프카서버 : t3.small(??)
RDS서버 : t2.micro(??) MySQL
테스트는 카프카,뮤텍스,세마포어,비관적락, Transactional Serializable 5가지로 진행하였으며
각각 0.1초동안 100개 쓰레드에서 같은 요청을 보내는 테스트를 10번 진행하였다.
초기 테스트 수행시 속도가 느리게 측정되는 현상이 있어 10번 중 앞의 4개 시행은 버리고 6개 시행을 기록하였고
6개 시행의 평균값들의 평균을 작성하였다.

3. 테스트 결과

구분
bookDonation 평균값
시행
표본수
평균
중간값
90%
95%
99%
최소값
최대값
오류
1. 카프카
749.2
1
100
780
767
1020
1043
1072
485
1080
0
2
100
737
734
987
1011
1042
416
1047
0
3
100
744
744
965
995
1016
472
1021
0
4
100
725
729
955
977
998
417
1007
0
5
100
763
765
978
1010
1028
471
1034
0
6
100
746
748
960
985
1007
335
1012
0
2. 뮤텍스
563.2
1
100
568
569
796
836
848
251
851
0
2
100
630
652
900
923
948
264
953
0
3
100
555
552
771
795
829
287
830
0
4
100
538
531
767
791
816
257
825
0
5
100
536
536
748
780
805
257
810
0
6
100
552
555
784
806
836
256
837
0
3. 세마포어
613.2
1
100
791
789
1014
1041
1061
513
1070
0
2
100
535
531
749
779
796
277
802
0
3
100
542
539
763
782
806
278
813
0
4
100
632
627
877
910
940
346
945
0
5
100
579
575
809
840
865
277
876
0
6
100
600
592
813
851
874
331
876
0
4. 비관적락
412.2
1
100
442
438
565
574
581
301
584
0
2
100
428
425
549
566
571
281
572
0
3
100
422
428
536
546
550
261
551
0
4
100
383
381
495
507
512
248
512
0
5
100
386
388
489
496
499
248
505
0
6
100
394
390
498
504
511
268
512
0
5. Transactional Serializable
451.8
1
100
482
473
570
631
644
362
648
0.09
2
100
470
465
557
593
621
352
625
0.11
3
100
440
425
550
571
578
320
587
0.13
4
100
422
418
494
545
562
310
567
0.1
5
100
456
434
512
556
601
323
603
0.1
6
100
441
466
536
589
597
340
611
0.12
구분
평균값(ms)
1. 카프카
749.2
2. 뮤텍스
563.2
3. 세마포어
613.2
4. 비관적락
412.2
5. Transactional Serializable
451.8
비관적락, Serializable, 뮤텍스, 세마포어, 카프카 순으로 속도가 빨랐다. 서버가 대부분 t2.micro다 보니 성능이 떨어져서 로컬에선 0.1~0.4초의 시간이 나오는 것이 0.4~0.7초 정도로 증가하였다.
속도가 가장 느려서 찝찝하긴 한데 일단 프로젝트에는 카프카를 적용하고자 한다.
이유는 카프카를 사용시 동시성 제어 뿐만 아니라 서버를 producer와 consumer로 나누어 서버 부하를 줄이고 확장에 용이하게 만들기 때문이다.
테스트 결과가 포함된 엑셀 파일을 아래 첨부한다.
동시성 성능 테스트.xlsx
28.7KB