Tomcat配置优化
0条评论配置示例可查看这篇文章:https://www.6zeroq.com/post/show/15
启动参数
export CATALINA_OPTS="-server -Xms32m -Xmx192m -XX:MaxMetaspaceSize=64m -Djava.awt.headless=true"
注意用CATALINA_OPTS而不是JAVA_OPTS,
服务端模式,运行更快;设定启动和最大内存(按实际情况);限制元空间大小,可定位查看是否加载了不必要的类;允许无图形化模式
设置线程数
<Connector port="8001" protocol="HTTP/1.1" address="127.0.0.1"
maxThreads="20" minSpareThreads="5" acceptCount="20"
enableLookups="false"
connectionTimeout="20000" disableUploadTimeout="false" connectionUploadTimeout="60000"
URIEncoding="utf-8" useBodyEncodingForURI="true"/>
address绑定本地地址,禁止外部访问
处理请求的最大线程和最小空闲线程数;acceptCount表示到达最大线程是请求等待队列的长度,一定设置,否则连接过多容易挂掉;禁用DNS查询,提高效率,默认是禁用的;连接超时,和上传超时设置;设置URI编码
Connector还有个属性executor,表示使用的共享线程池,多个Connector可以使用,注意设置了这个属性则线程相关设置的属性将忽略
AJP的Connector可以去掉,减小开销,反向代理就可以了
应用配置
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%{X-Forwarded-For}i %l %u %t "%r" %s %b" />
<Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" />
AccessLogValve中pattern="%{X-Forwarded-For}i %l %u %t "%r" %s %b",用户获取真实ip,请求头里面
RemoteIpValve的remoteIpHeader和protocolHeader分别指定客户真实ip和协议,反向代理转发的请求头配置
其他
标签GlobalNamingResources和Realm的去掉,这个是用户角色资源,用不到
参考:
https://tomcat.apache.org/tomcat-8.5-doc/config/http.html
https://stackoverflow.com/questions/11222365/catalina-opts-vs-java-opts-what-is-the-difference