发表于: 2017-10-17 14:37:02
2 749
今天完成的事情:
1.生成压测报告
压测机器配置:阿里云全民云计算单核内存1GB入门级
网络:专线1M
测试端口:
JSP:
JSON:
压测时间:7:30~8:30
WEB配置:单tomcat,直接访问8080端口,缓存测量时只打开需要测量的缓存软件
响应时间(90line) | 200ms | 500ms | ||||||
类型 | 并发数 | 吞吐量 | 并发数 | 吞吐量 | ||||
接口 | JSP | JSON | JSP | JSON | JSP | JSON | JSP | JSON |
无缓存 | 8 | 35 | 130 | 196 | 45 | 95 | 97~102 | 240~260 |
memcached | 8 | 38 | 154 | 286~300 | 47 | 140 | 100~108 | 230~250 |
redis | 8 | 35 | 153 | 295~300 | 45 | 140 | 103~107 | 236~250 |
压测时间:9:30~10:30
WEB配置:双tomcat,分别开放8080、8081端口,使用nginx负载均衡直接接入localhost,缓存情况同上
响应时间 (90line) | 200ms | 500ms | ||||||
类型 | 并发数 | 吞吐量 | 并发数 | 吞吐量 | ||||
接口 | JSP | JSON | JSP | JSON | JSP | JSON | JSP | JSON |
无缓存 | 15 | 34 | 110~120 | 240~250 | 38 | 54 | 105~120 | 225~230 |
memcached | 15 | 34 | 102~115 | 230~240 | 38 | 78 | 105~115 | 245~250 |
redis | 15 | 40 | 105~120 | 240~250 | 37 | 84 | 110~120 | 245~250 |
压测总结:
①分布式缓存:
通过外网进行访问缓存会大幅度降低网站的响应时间,若要使用分布式缓存,要在局域网中进行
②压测时间段:
早上7:30网络情况很好,因此压测中的响应时间相对较短,而到了10:00之后响应时间相对较长,到了晚上7:00人们上网最频繁的时候,响应非常的慢,即使隔几分钟使用相同的配置压测,得出的数据也完全不同,可见网络的堵塞情况对网站的响应时间有很大的影响
③服务器的硬件性能:
在200ms时,负载均衡的并发数比单WEB的多;但是在500ms时,负载均衡的效果反而变差了。在不访问网站的情况下查看服务器内存,发现两个tomcat和其他软件已经占了一半的内存(如下图),稍微访问下网站,服务器的内存容量就用光了,性能反而会下降
④接口的对比:
在传递同样的数据的情况下,JSON可承担的并发数是JSON的2~3倍,吞吐量是2倍左右;并且在本次压测中,JSP的性能几乎不受缓存影响,而JSON则有一个小幅度的性能提升。如果在要求性能的前提下,传递同样的数据可以达到一样的效果,优先使用JSON
⑤memcached和redis的对比:
使用受硬件性能影响最小的单WEB的压测对比:从总体上看,在单WEB中memcached的性能比redis的性能稍好,查阅资料,结论是在memcached在小型服务器中性能占优
2.模拟缓存穿透:
由于没写选择数据库数据的接口,因此模拟缓存穿透直接在后台代码中进行。
memcached
使用Jmeter访问,查看日志:
缓存被穿透,大量数据直接访问数据库
应对缓存穿透的情况,当缓存和数据库中都没取到数据时,设置一个短时间的缓存
效果:
避免了穿过缓存直接访问数据库的情况
明天计划的事情:
1.开始任务7
2.准备小课堂
遇到的问题:
解决缓存穿透问题的时候,写的代码不生效
解决方法:前面设置的缓存没有清空,导致代码不产生效果,flush_all就好了
收获:
1.总结压测,对影响网站响应的各个因素有了一个更直接的认识
2.提交任务6
进度:
任务6开始时间:2017.10.08
预计demo时间:2017.10.16
已延期至2017.10.17
于2017.10.17提交任务
禅道
http://task.ptteng.com/zentao/project-task-350.html
评论