Tomcat常用命令?
1.启动tomcat
//windows
startup.bat
//linux
./startup.sh
Tomcat常用配置?
1.直接配置Tomcat使用的JDK 路径。
修改tomcat\bin\startup.bat或者setclasspath.bat文件。设置JDK 的安装安装路径以及JRE 路径。
<!--在头部增加如下代码-->
set JAVA_HOME=jdk目录
set JRE_HOME=jdk目录\jre
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_102
set JRE_HOME=C:\Program Files\Java\jdk1.8.0_102\jre
2.设置Tomcat字符编码
修改文件位置:tomcat\conf\server.xml。添加内容 : URIEncoding=“UTF-8”
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
Encoding="UTF-8"
/>
3.修改tomcat端口号
tomcat在使用的时候会用到三个端口号:
8005:Tomcat 监听的关闭端口;
8080:Tomcat的服务端口;
8009:接受其他服务器转发过来的请求;
修改了这三个端口号,就可以在一台主机上启动多个Tomcat了;
修改文件位置:tomcat\conf\server.xml;
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
Encoding="UTF-8"
/>
4.设置Tomcat热部署
如何我们修改了class文件,可以让Tomcat自动重启生效;
修改文件位置:tomcat\conf\server.xml;
在内部添加标签:
<Context debug="0" docBase="D:\test\demo" path="/demo" reloadable="true"/>
docBase:项目路径,可以使用绝对路径或相对路径,相对路径是相对于webapps ;
path:访问项目的路径;
reloadable:是否自动加载新增或改变的class文件;
debug:属性与这个Engine关联的Logger记录的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省为0。 也就是程序异常时写入日志文件里的详细程度。
5.配置403,404,500错误页面
默认情况下,报出HTTP错误的时候会暴露tomcat版本号。如果不想暴露的话,就需要重新定义错误跳转页面。在tomcat\conf\web.xml
<error-page>
<error-code>401</error-code>
<location>/401.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
Tomcat性能调优?
Tomcat的默认配置作为生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈.。Tomcat还有很多的提升空间。Tomcat优化,可以分为内存,线程,IO。内存及分配使用信息可以在管理后台中查看
1:Tomcat内存优化,启动时告诉JVM我要一块大内存(调优内存是最直接的方式)
Windows 下的catalina.bat
Linux 下的catalina.sh 如:
set “JAVA_OPTS=%JAVA_OPT% -server -Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m -Djava.awt.headless=true”
-server: 一定要作为第一个参数,在多个CPU时性能佳,模式启动应用慢。
-Xms1024m: JVM初始分配的堆内存初始化内存。默认是物理内存的1/64。
-Xmx1024m:JVM最大分配的堆内存由-Xmx指定。默认是物理内存的1/4。建议均设为物理内存的一半。不可超过物理内存
-XX:NewSize: 新生成的池的初始大小。 缺省值为2M。
-XX:MaxNewSize: 新生成的池的最大大小。 缺省值为32M。可以设置256m
如果 JVM 的堆大小大于 1GB,则应该使用值:-XX:newSize=640m -XX:MaxNewSize=640m -XX:SurvivorRatio=16,或者将堆的总大小的 50% 到 60% 分配给新生成的池。调大新对象区,减少Full GC次数。
java8开始,PermSize被MetaspaceSize代替,MetaspaceSize共享heap,不会再有java.lang.OutOfMemoryError:PermGen space,可以不设置
2.Tomcat 线程优化 在server.xml中 如:
我们知道TOMCAT_HOME/conf/server.xml可以配置端口,虚拟路径等等 Tomcat相关主要配置。
Connector是连接器,负责接收客户的请求,以及向客户端回送响应的消息。所以 Connector的优化是重要部分。默认情况下 Tomcat只支持200线程访问,超过这个数量的连接将被等待甚至超时放弃,所以我们需要提高这方面的处理能力。
修改这部分配置需要修改TOMCAT_HOME/conf/server.xml,打开server.xml找到Connector 标签项,默认配置如下:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
其中port代表服务接口;protocol代表协议类型;connectionTimeout代表连接超时时间,单位为毫秒;redirectPort代表安全通信(https)转发端口,一般配置成443。
可以看到除了这几个基本配置外并无特殊功能,所以我们需要对 Connector 进行扩展。
我们将 Connector 配置修改为如下:
<Connector port="8080"
protocol="HTTP/1.1"
maxThreads="1000"
minSpareThreads="100"
acceptCount="1000"
maxConnections="1000"
connectionTimeout="20000"
maxHttpHeaderSize="8192"
tcpNoDelay="true"
compression="on"
compressionMinSize="2048"
disableUploadTimeout="true"
redirectPort="8443"
enableLookups="false"
URIEncoding="UTF-8" />
1.maxThreads:客户请求最大线程数 。由该连接器创建的处理请求线程的最大数目,也就是可以处理的同时请求的最大数目。如果未配置默认值为200。
2.minSpareThreads:线程的最小运行数目,这些始终保持运行。如果未指定,默认值为10。
3.maxSpareThreads Tomcat连接器的最大空闲 socket 线程数 。
4.enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名
5.redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口
6.acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads
7.connectionTimeout:当请求已经被接受,但未被处理,也就是等待中的超时时间。单位为毫秒,默认值为60000。通常情况下设置为30000。
8.minProcessors 服务器创建时的最小处理线程数 。
9.maxProcessors 服务器同时最大处理线程数 。
3.Tomcat 缓存优化
compression 打开压缩功能
compressionMinSize 启用压缩的输出内容大小,这里面默认为2KB
compressableMimeType 压缩类型
connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间
https://blog.youkuaiyun.com/m0_37327416/article/details/76185051
https://www.cnblogs.com/zhuawang/p/5213192.html
https://www.cnblogs.com/rocomp/p/4802396.html
Tomcat 验证虚拟机参数是否成功及使用情况?
验证
设置成功后我们可以利用JDK自带的工具进行验证,这些工具都在JAVA_HOME/bin目录下:
-
jps:用来显示本地的java进程,以及进程号,进程启动的路径等。
-
jmap:观察运行中的JVM 物理内存的占用情况,包括Heap size , Perm size 下载地址 等。
-
进入命令行模式后,进入JAVA_HOME/bin目录下,然后输入jps命令:进入命令行模式后,进入JAVA_HOME/bin目录下,然后输入jps命令:
jps
#显示以下结果
2340 Bootstrap
6696 Jps
其中 Bootstrap进程就是我们启动了的 Tomcat,其进程号为2340.
然后我们利用 jmap工具查看其内存相关配置:
jmap -heap 2340
Tomcat 有哪几种运行模式?
Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化。
这三种模式的不同之处如下:
BIO:
一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。
Tomcat7或以下,在Linux系统中默认使用这种方式。
NIO:
利用Java的异步IO处理,可以通过少量的线程处理大量的请求。
Tomcat8在Linux系统中默认使用这种方式。
Tomcat7必须修改Connector配置来启动:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000" redirectPort="8443"/>
APR:
即Apache Portable Runtime,从操作系统层面解决io阻塞问题。
Tomcat7或Tomcat8在Win7或以上的系统中启动默认使用这种方式。
Linux如果安装了apr和native,Tomcat直接启动就支持apr。(安装方法:http://my.oschina.net/lsw90/blog/181161)
Tomcat启动的时候,可以通过log看到Connector使用的是哪一种运行模式:
Starting ProtocolHandler [“http-bio-8080”]
Starting ProtocolHandler [“http-nio-8080”]
Starting ProtocolHandler [“http-apr-8080”]