写了个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 |
根据上面数据得到的总结: 1、 Young区越大性能越好 2、 每次请求的内存M,和young区的内存Y ,Y超过M的100倍左右时QPS提升不再明显 3、 我们的监控能得到每个系统的每次请求的内存大小,然后根据young的配置,可以给出优化建议 |