发表于: 2017-12-12 22:23:34

1 693


今天完成的事情:1.使用Nginx的Upstream来做负载。重新压测。 

                                     2.学习redis

明天计划的事情:本地连接redis,做压测

遇到的问题:本地连接服务器redis

收获:

我想了一下

${pageContext.request.contextPath }

如果要在每个请求前面都要添加岂不是很麻烦?我可以直接子啊controller里的requestmapping开头加上/项目名称能省很多代码吧

1.使用Nginx的Upstream来做负载。重新压测。 

    。。。。我把weight(权重)去掉,访问nginx,8080和8082端口可以来回切换了。。nginx默认是轮询的方式,轮流访问

登陆一次,memecache的loginUser缓存也有了

json缓存也有了

我想在nginx日志上看到两个web服务器访问分布,在nginx.conf配置

https://www.cnblogs.com/kevingrace/p/5893499.html

查看nginx日志,8080和8082轮流切换,没问题了

我登陆一次,可以看到里面的url请求,静态css、js、图片都在轮流切换了。我想这也说明分配在两个web服务器的项目完全一致才行。之前在网上看,真实的项目里往往把静态的分配给某个服务器,动态的分配给某个服务器,以此合理分配服务器压力,我逐渐感受到nginx的用处了

然后用jemeter压测登录

负载均衡+memcache 

负载均衡 不加memecache

关闭memcache

使用lsof -i:11211

然后用kill杀掉那个pid最多的那个

关闭后测试,可以看到不使用memcache,基本时间都变多了,不过max却少了一半,我想读取缓存也耗费了时间吧


来试一试负载均衡不同的几种分配方式

http://blog.csdn.net/qq_28602957/article/details/61615876

权重

8080端口访问次数和8082端口访问次数比值  120:280  =3:7

上述方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。

ip_hash

我们可以采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。


我在本地访问服务器,因为第一次是访问8080,根据访问客户端的ip使用hash算法得到一个数值,当再次访问还是这个数值,所以还是访问8080

其他几个就不一一测试了

   2.学习redis

先在本地安装redis

https://www.cnblogs.com/koal/p/5484916.html


启动成功,端口6379

重新启动redis:在redis解压目录打开cmd

1. redis-cli.exe
2. shutdown
3. exit
4. redis-server.exe redis.windows.conf

然后打开另一个dos输入  redis-cli.exe


在解压目录下输入

redis-server.exe redis.windows.conf --maxmemory 200M

一开始我set缓存报错,百度知道原来是我设置了密码,需要  auth "密码"才行

由于我设置了密码,在treeNMS也要写密码

关闭和启动

1. redis-cli.exe
2. shutdown
3. exit
4. redis-server.exe redis.windows.conf


然后在项目里用redis,引用jedis jar包

写个测试类

因为我之前设置密码了

所以要加一个jedis.auth("密码")

照着网上写个工具类

https://www.cnblogs.com/baihaojie/p/5981339.html

当我存java对象时,发现不能和memcache一样直接把我的user存到jedis,网上看到要写一个序列化和反序列化的工具类(真麻烦)

数据不仅要存储类对象,还可能使泛型类,我这里百度添加对泛型类序列化和反序列化的两个类

http://blog.csdn.net/tuposky/article/details/45339863

我这里没凑commonsutil,就把那里改了下,直接判断为null

麻烦的一批


getbyte方法解释

终于可以开始用redis测试了!

使用redis压测本地web项目

flushall清空数据

使用redis压测

..

自己登陆一次

用jemter压测报错

》。

又卡了好久,看到这篇文章最后一句,醍醐灌顶

http://blog.csdn.net/wu920604/article/details/51915882

把这个改大一点

(296*13.51%)=40  当我压测到 256的时候就开始挂掉了

调整连接最大实例数


关闭redis压测jsp页面


差距感觉不是很大

开启redis压测json

json接口,无redis

json也差不多

然后在服务器安装redis,把项目传到服务器上

https://www.cnblogs.com/silent2012/p/3499654.html

make过程很慢,耐心

可能是因为我的版本是4.0.6,conf文件在src的上一级目录里

启动

后台启动redis

因为这个窗口无法输入什么,一旦关闭redis也关闭,我们需要让他后台运行

https://www.cnblogs.com/wangchunniu1314/p/6339416.html (我没有采用他的下载redis方式,mkdir那块有问题,没弄懂)

给redis配置密码

https://www.cnblogs.com/756623607-zhang/p/6859540.html

想在本地看服务器上redis的情况,阿里云还是要设置安全组

设置了居然还不能访问,原来redis设置只能本地访问

网上找方法

http://blog.csdn.net/su_sai/article/details/53218626

linux重启redis

http://blog.csdn.net/zgf19930504/article/details/51850594

本地还是不能连接服务器redis,明天弄

这两天效率有些差,睡太晚了。


禅道:http://task.ptteng.com/zentao/task-view-15144.html









禅道:


返回列表 返回列表
评论

    分享到