发表于: 2018-01-25 23:49:18
1 485
今天完成的事情:
1.json接口,无缓存测试:
2.json接口,redis缓存测试:
3.jsp,无缓存:
4.jsp,redis缓存。
结论:jsp加缓存性能提高最大。
5.多tomcat部署:
配置ngnix负载均衡:
upstream orderapp {
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=1;
}
location / {
root html;
index index.html index.htm;
proxy_pass http://orderapp;
}
6.多tomcat测试:
1.jsp 无缓存
2.jsp redis缓存
3.json 无缓存
4.json redis缓存
没有体现出差别,提高并发数试试。
1.有缓存,json,1tomcat
并发20
并发50
并发100
2.有缓存,json 2tomcat
并发20
并发50
并发100
果然,高并发情况下,ngix的负载均衡作用明显。
今天看资料还了解了,使用ngix+多个web容器可以实现不停机更新,找个用户流量少的时间先停掉其中1个,更新,然后启动,再停掉另一个,更新,启动。比半夜停机更新不知道高到哪里去了,厉害。
7.关于缓存穿透。
缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。
解决方案:
如果一个查询返回的数据为空(不管是数 据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但是设置它的缓存时间较短。
实现:
//如果缓存中没有key
if(jedis.hlen("collegemap")==0){
System.out.println("无缓存调用");collegemap = getCollegeStringMap.GetCollegeMap();
//缓存穿透问题:没有缓存,数据库也没有,缓存中写入一个null。
if(collegemap == null){
jedis.hmset("collegemap",null);
//设置一个过期时间,避免被恶意使用,占大量缓存空间。
jedis.expire("collegemap",300);
}else {
jedis.hmset("collegemap", collegemap);
mav.addObject(collegemap);
}
//缓存中有key
}else{
System.out.println("有缓存调用");
//有缓存调用
collegemap = jedis.hgetAll("collegemap");
mav.addObject(collegemap);
}
return mav;
}
遇到的问题:
无。
收获:
1.redis基本使用方法。
2.nginx做了简单的负载均衡,高并发情况下效果明显。
3.了解了缓存穿透的概念,及解决方案。
明天的计划:
1.总结任务6,提交任务。
任务6开始时间:2018.1.23
预计完成时间:2018.1.28
禅道:http://task.ptteng.com/zentao/project-task.html
评论