(转)优化tomcat,提高网站运行速度

网站优化方案:

网站优化有很多方面,这里我们先主要讲讲 tomcat优化。【主要针对tomcat6.0及以上版本】

1.  为jvm增加更多的内存,tomcat安装时,默认为126M,可以设置。

Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个java虚拟机。您可以选择自己的需要选择不同的操作系统和对应的 JDK的版本(只要是符合Sun发布的Java规范的),但我们推荐您使用Sun公司发布的JDK。确保您所使用的版本是最新的,因为Sun公司和其它一 些公司一直在为提高性能而对java虚拟机做一些升级改进。一些报告显示JDK1.4在性能上比JDK1.3提高了将近10%到20%。

可以给Java虚拟机设置使用的内存,但是如果你的选择不对的话,虚拟机不会补偿。可通过命令行的方式改变虚拟机使用内存的大小。如下表所示有两个参数用来设置虚拟机使用内存的大小。

解压版:

参数
描述

-Xms<size>
JVM初始化堆的大小

-Xmx<size>
JVM堆的最大值

这两个值的大小一般根据需要进行设置。初始化堆的大小执行了虚拟机在启动时向系统申请的内存的大小。一般而言,这个参数不重要。但是有的应用程序在大负载
的情况下会急剧地占用更多的内存,此时这个参数就是显得非常重要,如果虚拟机启动时设置使用的内存比较小而在这种情况下有许多对象进行初始化,虚拟机就必
须重复地增加内存来满足使用。由于这种原因,我们一般把-Xms和-Xmx设为一样大,而堆的最大值受限于系统使用的物理内存。一般使用数据量较大的应用
程序会使用持久对象,内存使用有可能迅速地增长。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的
最大值设置为可用内存的最大值的80%。

Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。

Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置:

JAVA_OPTS=‘-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】‘

需要把这个两个参数值调大。例如:

JAVA_OPTS=‘-Xms256m -Xmx512m‘

表示初始化内存为256MB,可以使用的最大内存为512MB。

另外需要考虑的是Java提供的垃圾回收机制。虚拟机的堆大小决定了虚拟机花费在收集垃圾上的时间和频度。收集垃圾可以接受的速度与应用有关,应该通过分
析实际的垃圾收集的时间和频率来调整。如果堆的大小很大,那么完全垃圾收集就会很慢,但是频度会降低。如果你把堆的大小和内存的需要一致,完全收集就很
快,但是会更加频繁。调整堆大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求。在基准测试的时候,为保证最好的性能,要把堆的
大小设大,保证垃圾收集不在整个基准测试的过程中出现。

如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过 3-5
秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研究 垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的
80% 作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。

安装版:

可以执行Apache Tomcat 6 Properties配置管理工具。

进入Java面板后设置相关的Java参数:

Java Options:加入

-XX:PermSize=128M

-XX:MaxNewSize=256m

-XX:MaxPermSize=256m

Initial memory
pool:256MB    
【初始内存池】

Maximum memory pool:1024MB 
【最大内存池】

Thread stack size 
:1024KB  【线程的堆栈大小】

2.  增加tomcat响应池中的线程数。

查找tomcat6安装目录下conf目录中的server.xml文件,进行编辑

Tomcat默认Connector:

<Connector port=”8080″ protocol=”HTTP/1.1″

connectionTimeout=”20000″
redirectPort=”8443″ />

添加以下参数就行设置:

<Connector port=”8080″
 redirectPort=”8443″ 
protocol=”HTTP/1.1″【传输方式】

maxHttpHeaderSize=”8192″ useBodyEncodingForURI=”true”
minProcessors=”100″ maxProcessors=”5000″
maxThreads=”5000″ minSpareThreads=”1000″
maxSpareThreads=”4000″
enableLookups=”false” acceptCount=”3500″
compression=”on”
compressionMinSize=”2048″ 
【传输时是否支持压缩,压缩大小】

compressableMimeType=”text/html,text/xml,text/javascript,text/css,text/plain”【类型】

connectionTimeout=”60000″ disableUploadTimeout=”true”
debug=”0″ URIEncoding=”UTF-8″/>

以上是将配置信息 封装在连接中了,如果想把线程池单独提出来,

<Connector
executor="tomcatThreadPool"> 加上一个连接到线程池的属性。

<Executor name="tomcatThreadPool"
namePrefix="catalina-exec-"

maxThreads="1000" minSpareThreads="350" />

线程池名:       
name="tomcatThreadPool"

线程前缀:       
namePrefix="catalina-exec-"

最大产生线程数:maxThreads="1000"

最小初始现程数:minSpareThreads="350"

port:tomcat端口号,修改此处即可。

maxThreads:Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。

minProcessors,
maxProcessors:tomcat4中设置线程最大最小数。

enableLookups:
禁用DNS查询(当web应用程序向要记录客户端的信息时,它也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。DNS查询需要占用
网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。为了消除DNS查询对性能的影响我们可以关
闭DNS查询,方式是修改server.xml文件中的enableLookups参数值:)

acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。

connnectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

minSpareThreads:Tomcat初始化时创建的线程数。

maxSpareThreads:一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。

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

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

4.  负载均衡:

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

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

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

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

5.      
其它:

前面我们提到过操作系统通过一些限制手段来防止恶意的服务攻击,同样Tomcat也提供了防止恶意攻击或禁止某些机器访问的设置。

Tomcat提供了两个参数供你配置:RemoteHostValve 和RemoteAddrValve。

通过配置这两个参数,可以让你过滤来自请求的主机或IP地址,并允许或拒绝哪些主机/IP。与之类似的,在Apache的httpd文件里有对每个目录的允许/拒绝指定。

例如你可以把Admin Web application设置成只允许本地访问,设置如下:
<Context path="/path/to/secret_files"
...>
<Valve
className="org.apache.catalina.valves.RemoteAddrValve"

allow="127.0.0.1" deny=""/>
</Context>

如果没有给出允许主机的指定,那么与拒绝主机匹配的主机就会被拒绝,除此之外的都是允许的。与之类似,如果没有给出拒绝主机的指定,那么与允许主机匹配的主机就会被允许,除此之外的都是拒绝的。

时间: 2024-10-13 10:12:59

(转)优化tomcat,提高网站运行速度的相关文章

图片该如何优化来提高网站的性能,这里提供几种方法

译者:前端小智作者:Ayo Isaiah来源:https://www.freecodecamp.org/ 个人专栏 ES6 深入浅出已上线,深入ES6 ,通过案例学习掌握 ES6 中新特性一些使用技巧及原理,持续更新中,←点击可订阅. 点赞再看,养成习惯 本文 GitHub https://github.com/qq44924588... 上已经收录,更多往期高赞文章的分类,也整理了很多我的文档,和教程资料.欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西. 为了保证的可读性,

如何做好网站的站外优化?来提高网站的排名!

http://t.qq.com/nanjingzha2926 http://t.qq.com/p/t/469527057573220 http://t.qq.com/lishuizhao1511 http://t.qq.com/p/t/468723111989041 http://t.qq.com/wuxizhaomeinvbao http://t.qq.com/p/t/462924093642070 http://t.qq.com/jiangyinzh9492 http://t.qq.com/

提高网站速度的6种网站前端优化方法

最近有几个同事开通了个人博客,但却抱怨说因为的买的虚拟空间,所以个人博客网站打开速度很慢.对于这种现象,按照一般的情况来看,一个网站的访问 打开速度的快与慢,全是看这个网站使用的空间配置,要是这个空间主机的配置不错,那么你的网站访问速度就会很快;相反,要是你的空间主机的配置很烂,那么 你的网站访问速度就会很慢.其实抛去空间主机的配置因素不谈,我们站长或者seo人员也可以从网页制作方面着手,从而从现有的资源上提高网站的访问速度. 如果你还不知道如何才能优化网站来提高网站的访问速度,那就看一下马海祥

雅虎十四条 - 14个优化网站性能提高网站访问速度的技巧

14个优化网站性能提高网站访问速度的技巧 又叫“雅虎十四条”,想起一年前那个懵懂的我,大四傻乎乎的跑到大学城面试前端,那个时候以为寒暑假看了两套CSS的视频,就很牛B了,出发先还把视频温了一下,嗯嗯,这是滑动门,嗯嗯这是绝对定位,嗯嗯这是浮动清除…… 当时是彪叔面试我的,当时我还不知道那个人,全身黑漆漆的,黑色T-shirt,黑色皮肤,黑色帽子,黑色墨镜,还有点黑色胡渣的人,就是彪叔,补做了试题后支支吾吾的跟他谈了一下,发现完全不行,第一个问题是“雅虎十四条”是什么?然后我蒙了,pardon?

PHP提高网站性能的一些方法

前段时间面试问到了这个问题,回答的不是很全面,就去问了度娘,得到了一些比较全的答案,由于出处较多就没法确定原文出处了.下面是分享的答案. 一.大型网站性能提高策略: 大型网站,比如门户网站,在面对大量用户访问.高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器.高性能的数据库.高效率的编程语言.还有高性能的Web容器.这几个解决思路在一定程度上意味着更大的投入. web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如Jav

利用 squid 反向代理提高网站性能

本文在介绍 squid 反向代理的工作原理的基础上,指出反向代理技术在提高网站访问速度,增强网站可用性.安全性方面有很好的用途.作者在具体的实验环境下,利用 DNS 轮询和 Squid 反向代理技术,实现了网站的负载均衡,从而提高了网站的可用性和可靠性. 现在有许多大型的门户网站如 SINA 都采用 squid 反向代理技术来加速网站的访问速度,可将不同的 URL 请求分发到后台不同的 WEB 服务器上,同时互联网用户只能看到反向代理服务器的地址,加强了网站的访问安全. 反向代理的概念 反向代理

提高网站流量转化率需要分析的三个指标和要做的两个方面

从搜索引擎获取流量的最终目的是不断提高网站的核心价值.从搜索引擎获得的流量,有多少能转化为网站的核心价值,这就是转化率. 内容型网站,忠实用户是核心价值,把搜索引擎用户转变为忠实用户就是最终目的:SNS网站,注册用户是核心价值,让用户来你平台注册.活动就是最终目的:如果你做电子商务网站,卖东西就是核心价值,把东西卖给顾客就是你要达到的目的.在统计搜索引擎收益时,建议将转化率列为最重要的衡量效果指标. 搜索引擎用户在网站上的后续行为决定了这个用户会不会转化为忠实用户,分析用户行为可以为改进服务提供

不修改代码就能优化ASP.NET网站性能的一些方法

阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一些方法用于优化ASP.NET网站性能,这些方法都是不需要修改程序代码的.它们主要分为二个方面:1. 利用ASP.NET自身的扩展性进行优化.2. 优化IIS设置. 回到顶部 配置OutputCache 用缓存来优化网站性能的方法,估计是无人不知的. ASP.NET提供了HttpRuntime.Cache对象来缓存数据,也提供了OutputCache指

四个方面分析SEO如何提高网站的权重

一般情况之下站长们都认为首页权重高了,自然可以带动内页从而获得高流量和高排名,所以90%的站长都是从首页与目标关键词开始入手优化网站.但是我认为恰恰与大家相反,下面就来一起讨论一下以下的作法,从不同方面入手也是很有凑效. 一.分配关键词与META编写 分配好关键词,把每一个关键词分配到对应的内页里面,做到不会出现两个内页同时做一个词语的情况发生,这样可以集中网页权重,另外META的标题,关键词,描述里面同时出现关键词,在内容页里面也要多次出现,达到不形成关键词堆积,但是又能满足网页的四处一词的情