java app的每次请求消耗内存和young区配置大小的关系
写了个shell脚本跑了大概1个小时,了解一下young区配置为多少大的时候,每次申请内存的大小和QPS的关系
?
每个申请用ab进行压测,先压测1000次,这个1000次是预热,然后再压测30000次,然后修改配置,重启tomcat,不断重复上面过程,取得结果,:
?
-XX:NewSize
QPS(申请3M)
QPS(申请4M)
QPS(申请5M)
QPS(申请6M)
QPS(申请7M)
GC(count)
GC(real时间)
128
881
634
456
382
314
8098
94.2
178
943
704
548
427
350
5533
60.77
228
951
739
576
469
385
4219
37.72
278
983
757
601
490
409
3316
28.62
328
980
767
609
507
427
2734
23.24
378
953
769
610
513
436
2306
19.28
428
996
766
618
521
449
2002
16.8
478
973
757
629
528
450
1756
15.78
528
992
765
633
531
453
1576
13.23
578
1006
786
624
533
466
1431
11.66
628
977
776
634
535
461
1304
11.03
678
1003
775
633
544
462
1202
10.2
728
1001
783
638
534
465
1115
9.19
778
999
792
643
531
474
1037
8.68
828
1014
787
642
538
472
971
8.18
878
1014
782
640
545
471
913
7.59
928
1006
790
645
542
473
859
7.12
978
998
793
643
535
466
812
7.76
?
以上表格用折线图表示:
?
?
?
看起来还是有规律的:
?
申请内存
QPS转折点:
young/申请的内存
3M
92.66666667
4M
94.5
5M
95.6
6M
104.6666667
7M
111.1428571
?
?
根据上面数据得到的总结:
?