发表于: 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




返回列表 返回列表
评论

    分享到