发表于: 2017-12-12 22:23:34
1 695
今天完成的事情: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
禅道:
评论