发表于: 2017-09-22 23:26:42
1 896
今天完成的任务
1.首先解决昨天的问题
昨天碰到的是关闭缓存,JSP接口和JSON接口挂掉了。原因是我的service方法没有处理memcached进程关闭的异常,针对这个我修改了代码:

.png)
然后把服务器memcached进程关闭,重新运行测试类:
.png)

用浏览器测试,memcached关闭后JSP接口、JSON接口都能工作了。项目重新部署到服务器。
2.重新开始无缓存压测
A)启动时间1s,循环30次,同memcached进程开启时的压测条件,JSP和JSON的并发数为3时,90%Line超过200ms:
.png)

B)并发数3,启动时间1s,循环次数降到20,这个时候JSON接口性能优于JSP。
.png)

总结:启动时间1s,循环30次时,两种接口的并发数如下表所示:
JSON接口 | JSP接口 | |
无缓存 | 3 | 3 |
有缓存 | 10 | 18 |
所以,从性能考虑,以后写接口要写返回JSON数据的接口。
3.配置负载均衡
我的方案是在同一个服务器上采用nginx+jetty+resin,所以,要把项目的war包放到resin的webapps目录下。
打开nginx 的配置文件,改成如下内容

.png)
另外,服务器上同时打开nginx、jetty、resin的接口。访问home页的时候经常出现css样式或者是某几张图片加载失败的情况或者是弹出该域名未备案的页面,初夏这种情况只好多刷新几次页面。
现在压测的是JSP接口和JSON接口,这两个接口没有样式也没有图片,所以提到的问题不用考虑。用浏览器测试,这两个接口都可以正常访问:
.png)
4.压测 —— 负载均衡情况下
大概测了几次,条件一致时(启动时间1s,循环30次)JSP接口跟JSON接口的并发数跟没用负载均衡之前是一样的,就是错误率上去了
.png)

然后用查看结果树这个监听器看了一下响应的状态码,是403。也就是碰到“域名未备案”页面。
5.配置memcached的节点池
.png)

修改memcached.properties,添加如下内容
.png)

修改ApplicationContext.xml
6.安装Redis
A.Redis是用C语言编程的,所以在Linux要现状C语言编译器gcc-c++
.png)

B.到Redis官网找到最新版本的Redis下载地址http://download.redis.io/releases/redis-4.0.2.tar.gz,用wget命令下载
.png)

...
.png)

C.进入解压目录
.png)

D.编译源码,命令执行后会在src目录生成6个可执行文件
.png)

E.测试源码
.png)

这个时候报了一个错
.png)

G.安装tcl,然后重新测试源码
.png)

这个测试跑了10多次,中间还重启了服务器,终于测试通过。后来发现,其实根本不用跑test...
.png)

H.安装。进入src目录,输入命令安装
.png)

因为redis的6个可执行文件(包括配置文件)是分开的,这里把这些可执行文件统一放到新的文件夹里
.png)

配置文件单独放在同级的另一个文件夹里
.png)

I.设置以后台方式启动redis
用vi编辑器 vi redis.conf
输入 /daemonize(命令解析:向下查找daemonize字符串) 找到daemonize,将no改成yes,保存后退出即可
.png)

J.启动redis。启动一定要指定配置文件的位置。
7.编写redis的启动、停止、客户端连接脚本
进到一个存脚本的文件夹,我的是/opt/sh。用vi写启动脚本:
.png)

然后是停止脚本:
.png)

客户端连接脚本:
.png)

给上面的三个脚本添加权限
8.练习使用redis命令
用刚刚写的脚本启动客户端,试着存一个数据,发现redis还挺智能的,会提示set命令的格式:
遇到的问题
暂无
收获
1.对memcached有了更多的了解
2.学了点redis命令
明天的计划
完成步骤4,提交任务6
进度
当前进度 步骤4
任务开始时间 2017.9.17
预计提交时间 2017.9.23
评论