tomcat优化.docx

上传人:b****6 文档编号:6358496 上传时间:2023-01-05 格式:DOCX 页数:12 大小:245.59KB
下载 相关 举报
tomcat优化.docx_第1页
第1页 / 共12页
tomcat优化.docx_第2页
第2页 / 共12页
tomcat优化.docx_第3页
第3页 / 共12页
tomcat优化.docx_第4页
第4页 / 共12页
tomcat优化.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

tomcat优化.docx

《tomcat优化.docx》由会员分享,可在线阅读,更多相关《tomcat优化.docx(12页珍藏版)》请在冰豆网上搜索。

tomcat优化.docx

tomcat优化

隐藏版本信息

为了避免黑客针对某些版本进行攻击,因此我们需要隐藏或者伪装Tomcat的版本信息。

默认Tomcat的版本信息如下:

针对该信息的显示是由一个jar包控制的,该jar包存放在Tomcat安装目录下的lib目录下,名称为catalina.jar。

我们可以通过jarxf命令解压这个jar包会得到两个目录META-INF和org,通过修改org/apache/catalina/util/ServerInfo.properties文件中的serverinfo字段来实现来更改我们tomcat的版本信息。

文件信息如下:

cdtomcat/lib

jarxfcatalina.jar

cd/usr/local/apache-tomcat-7.0.53/lib

cdorg/apache/catalina/util

vimServerInfo.properties

server.info=nolinux

如果想修改成其它版本号,把这个地方的值改成其它值就行了

修改完毕之后,重启Tomcat即可看到效果!

效果如下:

优化web.xml

servlet与其它适用于整个Web应用程序设置的配置文件,必须符合servlet规范的标准格式。

通过它可以配置你web应用的相关选项,tomcat在启动的时候会读取这个文件,完成你开发的系统的一些初始化操作。

它可以做如下事情:

1、提供基于servlet的相关配置

2、增加监听器,监控session或在tomcat启动时,加载一些你希望加载的资源。

比如创建数据库连接池等等

3、设置session过期时间,tomcat默认是30分钟

4、更改应用的默认网页,常用为index.html/index.jsp等

5、增加过滤器,做一些你希望的过滤操作,比如敏感词汇的过滤

6、增加一些jstl(标准标签库)的定义,方便在jsp中直接includ进来,直接使用这些标签

7、struts,spring或hibernate的一些配置等等

如果没有WEB-INF/web.xml文件,tomcat会输出找不到的消息,但仍然会部署并使用web应用程序,不过通常最好还是让每一个上线的web应用程序都有一个自己的WEB-INF/web.xml,即使它只用做识别,但这是一个好的习惯。

由于Servlet规范主要是对于web程序员,而非系统管理员使用的。

因此,对于运维来讲,更关心的是站点的默认网页、自定义错误页面、禁止列目录等功能。

在正常生产环境中,肯定不会直接由tomcat对公网提供服务,前端肯定放的有apache或者nginx。

因此,针对站点的默认主页和自定义错误页面,我们均在前端的apache或者nginx中做。

另外,也可能在项目内的WEB-INF/web.xml中去做定义。

在tomcat新版本中,自动默认已经禁止列目录功能。

下面,列出几种常见功能,在web.xml中的表现形式:

 

站点默认主页:

自定义错误页面:

定义会话超时时间:

禁止列目录:

 

优化 server.xml

Tomcat的主配置文件,该文件中包含很多主要元素,比如Service、Connector、Host等,这些元素都会创建软件"对象"、排序及进程管道中设置的这些元素嵌套方,使我们可以执行过滤、分组等工作。

如果要对改文件做优化,我们需要先了解该文件的结构!

server.xml的结构图:

该文件描述了如何启动TomcatServe

1、maxThreads连接数限制

maxThreads是Tomcat所能接受最大连接数。

一般设置不要超过8000以上,如果你的网站访问量非常大可能使用运行多个Tomcat实例的方法,即,在一个服务器上启动多个tomcat然后做负载均衡处理。

这里还需要注意的一点是,tomcat和php不同。

php可以按照cpu和内存的情况去配置连接数,上万很正常。

而java还需要注意jvm的参数配置。

如果不注意就会因为jvm参数过小而崩溃。

2、多虚拟主机

强烈建议不要使用Tomcat的虚拟主机,推荐每个站点使用一个实例。

即,可以启动多个Tomcat实例,而不是启动一个Tomcat里面包含多个虚拟主机。

因为Tomcat是多线程,共享内存,任何一个虚拟主机中的应用崩溃,都会影响到所有应用程序。

虽然采用多实例的方式会产生过多的开销,但至少保障了应用程序的隔离和安全。

3、压错传输

tomcat作为一个应用服务器,也是支持gzip压缩功能的。

我们可以在server.xml配置文件中的Connector节点中配置如下参数,来实现对指定资源类型进行压缩。

compression="on"#打开压缩功能compressionMinSize="50"#启用压缩的输出内容大小,默认为2KB

noCompressionUserAgents="gozilla,traviata"#对于以下的浏览器,不启用压缩

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" #哪些资源类型需要压缩

提示:

Tomcat的压缩是在客户端请求服务器对应资源后,从服务器端将资源文件压缩,再输出到客户端,由客户端的浏览器负责解压缩并浏览。

相对于普通的浏览过程HTML、CSS、Javascript和Text,它可以节省40%左右的流量。

更为重要的是,它可以对动态生成的,包括CGI、PHP、JSP、ASP、Servlet,SHTML等输出的网页也能进行压缩,压缩效率也很高。

但是,压缩会增加Tomcat的负担,因此最好采用Nginx+Tomcat或者Apache+Tomcat方式,将压缩的任务交由Nginx/Apache去做。

4、管理AJP端口

AJP是为Tomcat与HTTP服务器之间通信而定制的协议,能提供较高的通信速度和效率。

如果tomcat前端放的是apache的时候,会使用到AJP这个连接器。

由于我们公司前端是由nginx做的反向代理,因此不使用此连接器,因此需要注销掉该连接器。

--

    

-->

5、更改关闭Tomcat实例的指令

server.xml中定义了可以直接关闭Tomcat实例的管理端口。

我们通过telnet连接上该端口之后,输入SHUTDOWN(此为默认关闭指令)即可关闭Tomcat实例(注意,此时虽然实例关闭了,但是进程还是存在的)。

由于默认关闭Tomcat的端口和指令都很简单。

默认端口为8005,指令为SHUTDOWN。

因此我们需要将关闭指令修改复杂一点。

当然,在新版的Tomcat中该端口仅监听在127.0.0.1上,因此大家也不必担心。

除非黑客登陆到tomcat本机去执行关闭操作。

修改实例:

6、更改Tomcat的服务监听端口

一般公司的Tomcat都是放在内网的,因此我们针对Tomcat服务的监听地址都是内网地址。

修改实例:

7、关闭war自动部署

默认Tomcat是开启了对war包的热部署的。

为了防止被植入木马等恶意程序,因此我们要关闭自动部署。

修改实例:

unpackWARs="false"autoDeploy="false">

 

禁用Tomcat管理页面

一般线上是不使用Tomcat默认提供的管理页面的,因此都会在初始化的时候就把这些页面删掉。

这些页面是存放在Tomcat安装目录下的webapps目录下的。

我们只需要删除该目录下的所有文件即可。

当然,还有涉及管理页面的2个配置文件host-manager.xml和manager.xml也需要一并删掉。

这两个文件存放在Tomcat安装目录下的conf/Catalina/localhost目录下。

dev_max_backlog = 32768

net.core.somaxconn = 32768

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.ipv4.ip_local_port_range = 1024 65000

net.ipv4.route.gc_timeout = 100

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_keepalive_time = 1200

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries = 2

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_mem = 94500000 915000000 927000000

net.ipv4.tcp_max_orphans = 3276800

net.ipv4.tcp_max_syn_backlog = 65535

linux内核的优化

保存退出,执行sysctl-p生效。

Sysctl-p(至少两次建议三次)

服务器资源配置优化

使用脚本执行系统初始化的时候对系统参数进行优化

配置参数优化

tomcat中如何禁止和允许主机或IP地址访问

 

  ... 

  

         allow="*,"/> 

  

         deny="192.168.1.*"/> 

  ... 

编辑tomcat安装目录下的conf目录下的server.xml文件,

enableLookups:

 是否反查域名,默认值为true。

为了提高处理能力,应配置为false 

在tomcat配置文件server.xml中的配置中,和连接数相关的参数有:

maxThreads="150"   #表示最多同时处理150个连接线程请求。

这个值表示Tomcat可创建最大的线程数。

默认值200。

   

minSpareThreads="25"   表示即使没有人使用也开这么多空线程等待。

maxSpareThreads="75"   表示如果最多可以空75个线程,例如某时刻有80人访问,之后没有人访问了,则tomcat不会保留80个空线程,而是关闭5个空的。

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

默认值50)

acceptCount="100"  当同时连接的人数达到maxThreads时,还可以接收排队的连接数量,超过这个连接的则直接返回拒绝连接。

(默认值100)

其中和最大连接数相关的参数为maxThreads和acceptCount。

如果要加大并发连接数,应同时加大这两个参数。

webserver允许的最大连接数还受制于操作系统内核参数设置,通常Windows是2000个左右,Linux是1000个左右。

当然这些值都不是越大越好,需要根据实际情况来设定。

可以基于测试的基础上来不断的调优分析。

Tomcat并发参数优化

protocol="HTTP/1.1"

maxHttpHeaderSize="8192"

maxThreads="1000"

minSpareThreads="100"

maxSpareThreads="1000"

minProcessors="100"

maxProcessors="1000"

enableLookups="false"

compression="on"

compressionMinSize="2048"

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

connectionTimeout="20000"

URIEncoding="utf-8"

acceptCount="1000"

redirectPort="8443"

disableUploadTimeout="true"/>

bufferSize:

 输入流缓冲大小,默认值2048bytes。

 

compression:

 压缩传输,取值on/off/force,默认值off。

connnectionTimeout:

 网络连接超时,默认值60000,单位:

毫秒。

配置为0表示永不超时,这样配置有隐患的。

通常可配置为30000毫秒。

 

maxKeepAliveRequests:

nginx动态的转给tomcat,nginx是不能keepalive的,而tomcat端默认开启了keepalive,会等待keepalive的timeout,默认不设置就是使用connectionTimeout。

所以必须设置tomcat的超时时间,并关闭tomcat的keepalive。

否则会产生大量tomcat的sockettimewait。

vim/tomcat/conf/server.xml

port="8080"protocol="HTTP/1.1"

connectionTimeout="30000"maxKeepAliveRequests="1"

redirectPort="8443"bufferSize="8192"sockedBuffer="65536"acceptCount="200"/>

其中maxKeepAliveRequests="1"表示每个连接只响应一次就关闭,这样就不会等待timeout了。

Catalina.shJVM参数优化

linux下编辑tomcat安装目录下的bin目录下的catalina.sh文件,windows下为catalina.bat

Catalina.sh添加如下内容:

CATALINA_OPTS="$CATALINA_OPTS–Xms 4000M –Xmx 4000M –Xmn 1000M -

XX:

SurvivorRatio=4-XX:

+UseConcMarkSweepGC -

XX:

CMSInitiatingOccupancyFraction=82-DLOCALE=UTF-16LE  -DRAMDISK=/-

DUSE_RAM_DISK=ture -DRAM_DISK=true"

-Xms为tomcat启动初始内存,一般为服务器开机后可用空闲内存减去100M

-Xmx为tomcat最大占用内存,一般为服务器开机后可用空闲内存减去50M

一般说来,您应该使用物理内存的80%作为堆大小。

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

说明:

以上两个参数关系到tomcat承受的访问性能,但也要根据服务器实际内存情况设定。

为了提升整个网站的性能,还需要在tomcat前面架设nginx或者apache反向代理服务器,用以提高用户高速访问。

配置完成后可重启Tomcat,通过以下命令进行查看配置是否生效:

首先查看Tomcat 进程号:

Lsof-i:

8080

查看是否配置生效:

Jmap-heapPID

AttachingtoprocessID11867,pleasewait...

Debuggerattachedsuccessfully.

Servercompilerdetected.

JVMversionis24.65-b04

usingthread-localobjectallocation.

ParallelGCwith4thread(s)

HeapConfiguration:

MinHeapFreeRatio=0

MaxHeapFreeRatio=100

MaxHeapSize=4294967296(4096.0MB)

NewSize=1073741824(1024.0MB)

MaxNewSize=1073741824(1024.0MB)

OldSize=5439488(5.1875MB)

NewRatio=2

SurvivorRatio=8

PermSize=268435456(256.0MB)

MaxPermSize=536870912(512.0MB)

G1HeapRegionSize=0(0.0MB)

HeapUsage:

PSYoungGeneration

EdenSpace:

capacity=1034944512(987.0MB)

used=421761112(402.22274017333984MB)

free=613183400(584.7772598266602MB)

40.75205067612359%used

FromSpace:

capacity=19398656(18.5MB)

used=18513920(17.65625MB)

free=884736(0.84375MB)

95.4391891891892%used

ToSpace:

capacity=19398656(18.5MB)

used=0(0.0MB)

free=19398656(18.5MB)

0.0%used

PSOldGeneration

capacity=1073741824(1024.0MB)

used=717480536(684.2427597045898MB)

free=356261288(339.75724029541016MB)

66.82058200240135%used

PSPermGeneration

capacity=268435456(256.0MB)

used=262707240(250.53714752197266MB)

free=5728216(5.462852478027344MB)

97.86607325077057%used

72392internedStringsoccupying7607216bytes.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1