tomcat 相关配置修改
Tomcat的主配置文件是server.xml,它位于Tomcat安装目录下的conf文件夹中。这个文件包含了Tomcat服务器的核心配置信息,用于定义服务器运行的各种参数和属性。下面我们将详细解析server.xml文件的结构和常用元素。
server.xml文件结构
server.xml文件是一个XML格式的文件,其结构大致可以分为以下几个部分:
Tomcat服务器配置(Server)
连接器配置(Connector)
引擎配置(Engine)
主机配置(Host)
上下文配置(Context)
资源配置(Resource)
其他自定义配置
常用元素详解
Tomcat服务器配置(Server)
在server.xml文件中,Server元素是根元素,用于定义整个Tomcat服务器的配置信息。常用的属性有:
shutdown:用于指定关闭服务器的字符串,用于通过命令行或脚本关闭服务器。
port:用于指定Tomcat服务器的监听端口。
maxThreads:用于指定服务器最大线程数。
scheme:用于指定URL解析使用的协议。
secure:用于指定是否使用SSL连接。
连接器配置(Connector)
Connector元素用于定义Tomcat服务器的连接器,即Web应用程序与外部世界的通信方式。常用的属性有:
protocol:指定使用的协议,如HTTP/1.1。
port:指定连接器监听的端口号。
redirectPort:指定重定向的端口号。
executor:指定使用的线程池执行器。
connectionTimeout:指定连接超时时间。
maxThreads:指定最大线程数。
maxConnections:指定最大并发连接数。
acceptCount:指定队列中等待的连接数。
acceptorThreadCount:指定接受连接的线程数。
bufferSize:指定缓冲区大小。
bufferPool:指定缓冲池大小。
protocolHandler:指定协议处理器类型。
compression:指定是否启用压缩功能。
compressionMinSize:指定压缩的最小数据量。
noCompressionUserAgents:指定不使用压缩的浏览器类型。
compressableMimeType:指定压缩的MIME类型。
secureConnectionOnly:指定是否仅使用安全的连接方式。
sslProtocol:指定使用的SSL协议版本。
sslCipherSuite:指定使用的SSL加密套件。
sslCertificateFile:指定SSL证书文件的路径。
sslCertificateKeyFile:指定SSL密钥文件的路径。
sslCertificateChainFile:指定SSL证书链文件的路径。
sslProtocol:指定使用的SSL协议版本。
clientAuth:指定是否要求客户端验证。
sslPasswordCipherSuite:指定SSL密码套件的密码算法。
sslSessionCacheSize:指定SSL会话缓存的大小。
sslSessionTimeout:指定SSL会话超时时间。
引擎配置(Engine)
Engine元素用于定义处理请求的引擎,它可以包含多个Host元素,每个Host元素表示一个虚拟主机。常用的属性有:
name:指定引擎的名称。
defaultHost:指定默认虚拟主机的名称。
主机配置(Host)
Host元素表示一个虚拟主机,它可以包含多个Context元素,每个Context元素表示一个Web应用程序的上下文信息。常用的属性有:
name:指定虚拟主机的名称。
appBase:指定Web应用程序所在的目录路径。
unpackWARs:指定是否解压WAR文件到appBase目录下。
autoDeploy:指定是否自动部署Web应用程序。
上下文配置(Context)和资源配置(Resource)等其他自定义配置这里就不一一列举了,它们根据实际需要而定,可以参考Tomcat官方文档进行了解和配置。
示例
修改端口
修改默认的http访问端口:8080 为 8181,在tomcat8.5/conf/server.xml文件里修改,示例
修改默认的session有效期
在tomcat/conf/web.xml文件里修改,范围是具体项目,示例
在tomcat/conf/server.xml
在java后台代码里配置,具体页面的session有效时间
生效优先级: 3 > 2 > 1,
tomcat 调优
tomcat 修改最大线程,在tomcat/conf/server.xml文件里修改:示例
maxThreads=“X” 表示最多同时处理X个连接
minSpareThreads=“X” 初始化X个连接
maxSpareThreads=“X” 表示如果最多可以有X个线程,一旦超过X个,则会关闭不在需要的线程
acceptCount=“X” 当同时连接的人数达到maxThreads时,还可以排队,队列大小为X.超过X就不处理
tomcat 内存优化
Windows 下的catalina.bat
Linux 下的catalina.sh 如:
JAVA_OPTS=’-Xms256m -Xmx512m’ -Xms JVM初始化堆的大小 -Xmx JVM堆的最大值 实际参数大小根据服务器配置或者项目具体设置
在server.xml中实现对Tomcat的IO切换
APR是从操作系统级别来解决异步的IO问题,大幅度的提高性能。
APR(Apache Portable Runtime)是一个高可移植库,它是Apache HTTP Server 2.x的核心,能更好地和其它本地web技术集成,总体上让Java更有效率作为一个高性能web服务器平台而不是简单作为后台容器。
在产品环境中,特别是直接使用Tomcat做WEB服务器的时候,应该使用Tomcat Native来提高其性能。如果不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待。但是配上APR之后,并发的线程数量明显下降,从原来的300可能会马上下降到只有几十,新的请求会毫无阻塞的进来。
在局域网环境测,就算是400个并发,也是一瞬间就处理/传输完毕,但是在真实的Internet环境下,页面处理时间只占0.1%都不到,绝大部分时间都用来页面传输。如果不用APR,一个线程同一时间只能处理一个用户,势必会造成阻塞。所以生产环境下用apr是非常必要的.