模拟登录并发
操作:测试,发登录,并延时30ms发送1000字符串,服务器把字符串返回
操作系统:i3-4150 12GB
记录:
终端个数 | 返回耗时 | 结论 |
---|---|---|
20 | 4秒 | 较好 |
50 | 2秒 | 较好 |
100 | 3秒 | 较好 |
150 | 20秒 | 较好 |
结论:该操作模拟并发,连接个数在一定范围内,并发数据能较好处理,如100个连接终端内,延时较短。当终端并发个数较多情况下,并发数据堆积在队列里等待执行。表现为客户端延时较大收到服务器返回的数据。
优化建议:可以减小并发的情况,正常来说如登录并发的概率不会太大,可以延时30ms执行,几百连接使用基本无太大问题
模拟真实业务测试,内存占用情况
操作:服务器端每隔10秒向所有终端发送数据,数据大小为221912长度字符串(每次发送从文件中读取出来),基本满足业务使用
操作系统:i3-4150 12GB
记录:
终端个数 | 内存最大值 | 内存使用相对稳定值 | 结论 |
---|---|---|---|
0 | 25MB | 25MB | 较低 |
50 | 180MB | 120MB | 一般 |
100 | 210MB | 160MB | 一般 |
150 | 200MB | 110MB | 较好 |
200 | 230MB | 110MB | 较好 |
250 | 160MB | 90MB | 较好 |
300 | 400MB | 250MB | 一般 |
400 | 420MB | 350MB | 一般 |
500 | 900MB | 700MB | 较差 |
每次发送从文件中读取出来,会导致大量消耗内存,改成只读取一次文件,并且发送频率太高了,调整为没隔30秒:
终端个数 | 内存最大值 | 内存使用相对稳定值 | 结论 |
---|---|---|---|
100 | 50MB | 20MB | 一般 |
200 | 60MB | 30MB | 较好 |
300 | 70MB | 40MB | 较好 |
400 | 80MB | 50MB | 一般 |
500 | 110MB | 80MB | 一般 |
结论:单纯连接使用的内存消耗量不大,500块终端也维持在100MB以内。主要导致内存的还是业务数据产生的内存占用。同时推送给所有终端的同时,如果数据量较多,一次推送完成的时间比较长,频繁全局推送,会导致数据累积在队列里导致内存占用过大
优化建议:1、避免一次全局推送数据量过大 2、业务数据导致的内存占用是主要情况,避免内存泄露的情况,尽量多使用局部变量