发表于: 2017-06-23 03:54:34
1 1151
今日完成
继续测试,虽然前面已经在本机测试过tomcat了,这次把tomcat部署到一个8核32G内存的服务器上,测试从另外一个8核32G服务器运行。
Tomcat,我把32G内存都配置给了Java Heap。
测试工具是用Jmeter以及Apache Benchmark(AB)
先上AB测试的测试结果。AB设置成了发1000个并发请求,总请求量为10w个。AB的测试结果现实throughput是5000每秒左右。我在一台1G内存1核的服务器上跑了同样的测试,throughput为300个每秒。也许是因为Tomcat 以及JAVA app都比较吃内粗,所以二者差距比较比较明显。
然后在Non-GUI状态下跑Jmeter,结果有点惊人,达到了8900请求每秒。记得曾经看到网上有篇Netflix写的文章说Nginx带Tomcat可能会因为中间损耗而导致性能下降,而不如直接使用Tomcat(不明就里)。
查看Tomcat CPU使用,达到了150%。
总结:
从已经做的所有压力测试看,如果内存比较小,比如说1G,tomcat的表现只能低于200/m的TPS下低错误率运行。但是内存高的服务器上,性能还是杠杠的。如果跑起来真实的程序,服务器端会是瓶颈,文件读写会是瓶颈。就要用caching来解决了。再继续测下去就需要写一个比较仿真的系统来测了。
关于Nginx加Tomcat的思考
我们前面纯测Nginx,8核32G内存的服务器下Nginx可以达到每秒派发5000个请求。而在同样的服务器上Tomcat可以轻松达到5000请求的处理(AB测试结果),按照Jmeter测试结果看Throughput则达到了8900请求每秒。这种情况就没有必要用一台Nginx带多台Tomcat了。硬要去给Tomcat降级低内存主机配合Nginx或者升级Nginx配合Tomcat意义也不是很大。
思考真实场景
从前面一系列试验看,Throughput的瓶颈是数据库访问,MySQL数据库访问带来的延迟问题,要通过Redis或者Memcached 走Caching来解决。另外一个可能的问题是静态文件 读写IO的瓶颈。这个也应该是通过Caching来解决的。Caching除了方法意外。。还是要靠内存来解决。。。。
结论
内存是个问题。
今日困难
主要困难是今天不能在家学习了。。。
今日所得
对Tomcat有了性能有了认识
明日计划
睡饱之后。。继续战斗。
评论