首页 程序猿 软件测试 浏览内容

Tomcat优化-压力测试二

1306 0 BaiDu已收录 评论留言

3.Tomcat与其它web服务器整合使用

虽然tomcat也可以作web服务器,但其处理静态html的速度比不上apache,且其作为web服务器的功能远不如apache,因此我们想把apache和tomcat集成起来,将html与jsp的功能部分进行明确分工,让tomcat只处理jsp部分,其它的由apache,IIS等这些web服务器处理,由此大大节省了tomcat有限的工作“线程”。

4.负载均衡

在负载均衡的思路下,多台服务器为对称方式,每台服务器都具有同等的地位,可以单独对外提供服务而无须其他服务器的辅助。通过负载分担技术,将外部发送来的请求按一定规则分配到对称结构中的某一台服务器上,而接收到请求的服务器都独立回应客户机的请求。

提供服务的一组服务器组成了一个应用服务器集群(cluster),并对外提供一个统一的地址。当一个服务请求被发至该集群时,根据一定规则选择一台服务器,并将服务转定向给该服务器承担,即将负载进行均衡分摊。

通过应用负载均衡技术,使应用服务超过了一台服务器只能为有限用户提供服务的限制,可以利用多台服务器同时为大量用户提供服务。当某台服务器出现故障时,负载均衡服务器会自动进行检测并停止将服务请求分发至该服务器,而由其他工作正常的服务器继续提供服务,从而保证了服务的可靠性。

负载均衡实现的方式大概有四种:第一是通过DNS,但只能实现简单的轮流分配,不能处理故障,第二如果是基于MSIIS,Windows2003server本身就带了负载均衡服务,第三是硬件方式,通过交换机的功能或专门的负载均衡设备可以实现,第四种是软件方式,通过一台负载均衡服务器进行,上面安装软件。使用ApacheHttpdServer做负载平衡器,Tomcat集群节点使用Tomcat就可以做到以上第四种方式。这种方式比较灵活,成本相对也较低。另外一个很大的优点就是可以根据应用的情况和服务器的情况采取一些策略。

大家都知道,JAVA程序启动时都会JVM都会分配一个初始内存和最大内存给这个应用程序。这个初始内存和最大内存在一定程度都会影响程序的性能。比如说在应用程序用到最大内存的时候,JVM是要先去做垃圾回收的动作,释放被占用的一些内存。

所以想调整Tomcat的启动时初始内存和最大内存就需要向JVM声明,一般的JAVA程序在运行都可以通过中-Xms-Xmx来调整应用程序的初始内存和最大内存:

如:java-Xms64m-Xmx128ma.jar.

tomcat的启动程序是包装过的,不能直接使用java-X.....tomcat.*来改变内存的设置。在Tomcat在改变这个设置

有两种方法:

1.就需要在环境变量中加上TOMCAT_OPTS,CATALINA_OPTS两个属性,

如SETCATALINA_OPTS=-Xms64m-Xmx512m;

ms是最小的,mx是最大,64m,512m分别是指内存的容量.

2.修改Catalina.bat文件

在166行“remExecuteJavawiththeapplicableproperties”以下每行

%_EXECJAVA%%JAVA_OPTS%%CATALINA_OPTS%%DEBUG_OPTS%-Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%"-classpath"%CLASSPATH%"-Dcatalina.base="%CATALINA_BASE%"-Dcatalina.home="%CATALINA_HOME%"-Djava.io.tmpdir="%CATALINA_TMPDIR%"%MAINCLASS%%CMD_LINE_ARGS%%ACTION%中的%CATALINA_OPTS%替换成-Xms64m-Xmx512m

Tomcat性能优化

1.停用DNS查询

server.xml里

<Connector
port="8887"maxThreads="150"minSpareThreads="25"maxSpareThreads="75"
enableLookups="false"redirectPort="8443"acceptCount="100"
debug="0"connectionTimeout="20000"
disableUploadTimeout="true"/>

加上enableLookups="false";这样就不使用DNS查询,也不会有延迟了

除非需要所有连接到服务器的HTTP客户端的完整主机名称

注:Connector的enableLookups性属的意义是:调用request.getRemoteHost()是否会通过DNS查询来取得远处客户端的真正主机名称。true表示会查询,false表示以字符串格式传回客户端的IP地址。默认值是:true

2,调整线程的数目

Tomcat使用线程池以便对传入的请求提供快速的响应。

通过更改Connector的minProcessors与maxProcessors的值,可以控制所分配的线程数目
将这两个参数设为最佳值的最好方式是对各个参数尝试许多不同的设定值,然后以仿真的网络流量进行测试,同时并观察响应时间与内存的使用量。每一种机器、操作系统与JVM的组合都可能有不同的表现,而且并非所有人的网站流量都会相同,所以没有现成的规则来决定最小与最大的线程数

3.加快jsp的编译速度,预先编译jsp

4.容量规划:经验式的容量规划,企业容量规划

经验式的容量规划与企业容量规划最大的差异就是深度。经验式容量规划使用经验法则,因此比较像是经验预测,而企业容量规划则是深度地研究需求与性能,其目标是尽可能产生最精确的数字

apache+tomcat+mysql

Apache+Tomcat+Mysql网站配置

标签:
墨月的头像
  • 本文由墨月网络整理编辑,转载请以链接形式注明本文地址:https://www.moyoo.net/10818.html
    版权所有© 墨月网络 | 本文采用 BY-NC-SA 进行授权丨发布于:2014-09-01 23:54
    若未注明,均为原创;部分内容源于网络,版权归原作者所有,如有侵权,请联系我们删除。
评论头像

关注我们,实时联系

AD

注册即送25美刀

Vultr

推广

Vultr

赞助商

广而告之

alimama