今天完成的事情:
1.停止Memcache进程,观察压测数据。部署两台WEB,使用Nginx的Upstream来做负载。重新压测。
经过今天配置nginx,才发现我对nginx的配置文件还是不够了解。

上面红框都是今天遇到的坑,短短的几行代码,还是花费了很多时间。
首先:server_name 是我们在输入到地址栏的地址,(原来以为是proxy_pass的地址囧)

现在我们梳理一下一个请求的流转:打开nginx,如上的请求,匹配nginx的server_name,然后location匹配所有请求,proxy_pass代表请求的子域,proxy必须带有http:// ,上面的upstream 后的localhost与proxy_pass是相对应的。这里其实可以用其他名字的,稍后讲为什么用localhost。upStream相当于一个转发,其中的两个server分别是本地tomcat和虚拟机上的tomcat。
关于为什么proxy_pass使用localhost,是因为静态文件失效的问题。参考于:沈明师兄的日报:http://www.jnshu.com/daily/15386?tid=53
2.配置好的访问结果:
本地:

虚拟机:

对,我本地的数据库和虚拟机的数据库取得的数据不一样,这样更容易分辨是访问的本地还是虚拟机。
3.今天用jmeter压测的结果:
没有memcache:

使用memcache:

可以看到提升还是挺明显的。
再来:nginx负载均衡:


相对于没有使用memcache的测试也没有性能上的提升 啊。还有可能是我电脑的限制。
还有1个总是执行好几秒才能执行完,但是可以看到,没有错误出现,可能这应该是nginx提升的地方。即:请求总是可以被执行,虽然响应比较慢。
明天计划的事情:
1.用redis实现一遍现在的功能,任务六就可以完结了。
遇到的问题:
1.竟然是tiles的问题,没有想到。
把项目发不到虚拟机上出现了报错:
Caused by: org.apache.tiles.definition.DefinitionsFactoryException: I/O Error reading definitions. at org.apache.tiles.definition.digester.DigesterDefinitionsReader.read(DigesterDefinitionsReader.java:273) at org.apache.tiles.definition.UrlDefinitionsFactory.readDefinitions(UrlDefinitionsFactory.java:286) at org.apache.tiles.definition.UrlDefinitionsFactory.init(UrlDefinitionsFactory.java:130) at org.apache.tiles.impl.BasicTilesContainer.initializeDefinitionsFactory(BasicTilesContainer.java:406)
好像是tiles的原因,
解决办法:
解决方法修改tilesContext.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
"http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
把上面的替换成下面的,原来使用的是tiles 2.1 dtd文件修改成3.0问题解决
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
收获:
对nginx的认识更深入一点。
评论