tomcat优化

1. tomcat目录的结构
1)bin:该目录存放的是二进制可执行文件。
2)conf:配置文件目录,非常重要
server.xml: 配置服务器信息,端口号,虚拟主机等
tomcat-users.xml:存放tomcat用户文件,这里保存的是tomcat的用户名以及密码,以及用户的角色信息。
web.xml:这和文件中注册了很多MIME类型,及是文档类型
context.xml:对所有应用的统一配置值,通常我们不会去配置它。
3)lib:tomcat依赖的jar包
4)logs:记录tomcat启动关闭的信息,日志信息
5)temp:临时文件的目录
6)webapps:存放web项目的目录,每一个文件夹都是一个web项目
7)work:运行时生成的文件,最终运行的文件都在这里,比如jsp生成的class等。
8)LICENSE:许可证
9)NOTICE:说明文件

2. tomcat常见操作
1)添加自定义用户和密码
编辑conf/tomcat-users.xml
<user username="xxx" password="xxx" roles="manager"/>
2)修改端口(编辑conf/server.xml)

<Server port="8005" shutdown="SHUTDOWN">:tomcat  #监听的关闭端口

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
 # 用于监听浏览器访问请求8080端口,当用户用http请求某个资源,而该资源本身又被设置了
 # 必须要https方式访问,此时Tomcat会自动重定向到这个redirectPort设置的https端口。
 # 例如:我在浏览器通过地址栏输入:http://www.taobao.com   当程序跳转到淘宝网之后地址
 # 栏中的地址就自动的被重定向到了:https://www.taobao.com
 
 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
 #  当用户通过AJP协议进行访问的时候tomcat就监听的端口为8009;与上面的同理。。。。。。

如果修改的那个tomcat的话只需要修改8080即可,如果修改多个tomcat的话,将三个端口都修改,这样才会必免错误

3. tomcat限制ip访问
tomcat过滤阀工有两个
1)远程地址过滤(Remote Address Filter)
2)远程主机名过滤(Remote Host Filter)
备注:两个过滤器功能一样,一个针对IP地址进行过滤,一个针对主机名称进行过滤.

# 编辑conf/server.xml
# 禁止某一个或者一些ip                 
 <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1,192.168.1.27" deny="192.168.1.55"/>
# 禁止某一网段: 
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1,192.168.1.27" deny="192.*"/>
# 禁止某一个或者一些主机 不建议使用
<Valve className="org.apache.catalina.valves.RemoteHostValve" allow="wyh"   deny="ms*">

4. 修改tomcat内存

Windows 下的catalina.bat中大概45左右添加一行话:set JAVA_OPTS=-Xms256m -Xmx512m

Linux 下的catalina.sh中中大概45左右添加一行话:set JAVA_OPTS=-Xms256m -Xmx512m

怎样查看tomcat的内存大小呢:依靠JDK中自带的工具:C:\Program Files\Java\jdk1.7.0_51\bin\jvisualvm.exe

5. tomcat优化
1)加大tomcat内存
2)线程池优化

参考配置:
    <Connector port="9027"
  protocol="HTTP/1.1"
  maxHttpHeaderSize="8192"
  maxThreads="1000"
  minSpareThreads="100"
  maxSpareThreads="1000"
  minProcessors="100"
  maxProcessors="1000"
  enableLookups="false"
  URIEncoding="utf-8"
  acceptCount="1000"
  redirectPort="8443"
  disableUploadTimeout="true"/>

     参数说明
  maxThreads 客户请求最大线程数 
  minSpareThreads Tomcat初始化时创建的 socket 线程数 
  maxSpareThreads Tomcat连接器的最大空闲 socket 线程数 
  enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名 
  redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口 
  acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads ) 
  connectionTimeout 连接超时 
  minProcessors 服务器创建时的最小处理线程数 
  maxProcessors 服务器同时最大处理线程数 
  URIEncoding URL统一编码

3)tomcat IO优化
因为tomcat低版本的采用的BIO模式的,tomcat7+开始采用NIO模式,如果高并发的情况下需要采用APR模式

简而言之:为了使用到NIO模式或者APR模式,所以建议使用高版本的tomcat

4)tomcat缓存优化

conf/server.xml
 <Connector port="9027" ... 
 compression="on"  #可是on不是on,意思表示为开启压缩功能  
 compressionMinSize="2048"
 .../>

compression打开压缩功能,在tomcat内存中生产一个缓存文件,当第二个人使用的时候回通过访问缓存速度变快
compressionMinSize启动压缩的内容大小,默认是2k,那就意味这不是随便压缩的,也不提倡过大的压缩

5)禁用AJP连接器实现动静分离
注释tomcat中server.xml中 即可
这样的话 tomcat只是用来处理动态请求,那静态可以依靠nginx来处理

6.总结
1)tomcat中依靠一个线程池处理并发
2)tomcat线程池在tomcat-util.jar中
3)tomcat-util.jar中包含两种线程池
JNI技术实现的APR的pool
java实现的Threadpool(默认)
4)ThreadPool的工作原理
服务器启动使,创建一个一维数组(maxThread=200个)并创建空闲线程(minSpareThreads=5个)随时等待用户请求.将一个需要执行的实例传给ThreadPool中,如果有空闲线程那就执行,没有那就一次性创建minSpareThreads个空闲线程,如果已经超过了maxThread那就等待空闲线程,等待有了空闲线程在执行

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值