第一次作压力测试,真的感受压力山大。。 但毕竟本身是部门负责人,必需要作这个事,不得不硬着头皮去面对。服务器
首先,因为鄙人能力有限,与公司的技术总监沟通了一下,而后肯定了测试的思路以及问题解决的方案。socket
咱们公司所作的业务是打车软件。性能
1.理顺思路 首先,咱们主要针对socket接口进行压力测试,根据业务逻辑 用户登陆、订单流程等全部流程进行测试,去定位问题所在的接口,再分析代码,优化代码,若是还存在问题,也能够经过时间戳,来查看代码运行慢的部分,进而去找出问题,解决它。测试
2.具体测试 测试就是配置好循环让程序跑线程,基本上能够看出来一个服务器的最大负载能力,我使用过100-1000,以100递增的测试 ,服务器是Tomcat(优化过的), 当线程数达到800左右,就会开始出现崩溃的现象,Netty服务器就连不上了。 固然800左右基本仍是稳定的,后来测试了1000、1500、2000 基本上每次都有崩溃的现象。不知道是否是跟服务器和Netty的优化有关。 每次跑完程序,都用jmap -heap pid命令,来查看堆信息 ,也试过jstack pid 其中有锁线程的状况,毕竟不够专业,这些东西没看太明白,下面贴出来示例优化
100次登录测试结果
C:\Users\Administrator>jmap -heap 1964
Attaching to process ID 1964, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 24.60-b09
using thread-local object allocation.
Mark Sweep Compact GC
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 536870912 (512.0MB)
NewSize = 1048576 (1.0MB)
MaxNewSize = 4294901760 (4095.9375MB)
OldSize = 4194304 (4.0MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 12582912 (12.0MB)
MaxPermSize = 67108864 (64.0MB)
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
New Generation (Eden + 1 Survivor Space):
capacity = 40239104 (38.375MB)
used = 24764880 (23.617630004882812MB)
free = 15474224 (14.757369995117188MB)
61.544312716307005% used
Eden Space:
capacity = 35782656 (34.125MB)
used = 24740664 (23.59453582763672MB)
free = 11041992 (10.530464172363281MB)
69.14149693080357% used
From Space:
capacity = 4456448 (4.25MB)
used = 24216 (0.02309417724609375MB)
free = 4432232 (4.226905822753906MB)
0.5433924057904411% used
To Space:
capacity = 4456448 (4.25MB)
used = 0 (0.0MB)
free = 4456448 (4.25MB)
0.0% used
tenured generation:
capacity = 89522176 (85.375MB)
used = 22417720 (21.37920379638672MB)
free = 67104456 (63.99579620361328MB)
25.041527140716507% used
Perm Generation:
capacity = 12582912 (12.0MB)
used = 3979880 (3.7955093383789062MB)
free = 8603032 (8.204490661621094MB)
31.629244486490887% used
12941 interned Strings occupying 998488 bytes.线程
jstack 内容太多,这里就不贴了。接口
这是在本机的测试,尚未放到服务器真实环境里面测试。 不肯定会不会性能更好一点。ci
目前还只测试到登录,具体的订单业务流程尚未开始测。it
第一次作测试,作得不对的,请多指教。io