千家信息网

tomcat9 中怎么设置虚拟内存

发表于:2024-09-23 作者:千家信息网编辑
千家信息网最后更新 2024年09月23日,本篇文章给大家分享的是有关tomcat9 中怎么设置虚拟内存 ,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1 Server.xml配置
千家信息网最后更新 2024年09月23日tomcat9 中怎么设置虚拟内存

本篇文章给大家分享的是有关tomcat9 中怎么设置虚拟内存 ,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

1 Server.xml配置修改

Connector是连接器,负责接收客户的请求,以及向客户端回送响应的消息。

打开tomcat/conf/server.xml,找到如下配置

修改为

参数描述:

  • org.apache.coyote.http11.Http11NioProtocol:调整工作模式为Nio

  • maxThreads:最大线程数,默认150。增大值避免队列请求过多,导致响应缓慢。

  • minSpareThreads:最小空闲线程数。

  • acceptCount:当处理请求超过此值时,将后来请求放到队列中等待。

  • disableUploadTimeout:禁用上传超时时间

  • connectionTimeout:连接超时,单位毫秒,0代表不限制

  • URIEncoding:URI地址编码使用UTF-8

  • enableLookups:关闭dns解析,提高响应时间

  • compression:启用压缩功能

  • compressionMinSize:最小压缩大小,单位Byte

  • compressibleMimeType :压缩的文件类型

2 JVM 优化

需要基础知识:堆栈内存,jvm 垃圾收集器,jvm 性能监控常用工具,能够读懂gc日志等。

JDK 1.8中 PermSize 和 MaxPermGen 已经无效。JDK 1.8 中已经不存在永久代的结论 而以 元空间 代替

修改 tomcat/bin/catalina.sh (8G 内存机器参考配置):

JAVA_OPTS="-Xms4G -Xmx4G -Xmn1024m -XX:MetaspaceSize=1024M -XX:MaxMetaspaceSize=1024M -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/appl/gc.log -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly"
  • -Xms4G 初始分配的堆内存

  • -Xmx4G 最大允许分配的堆内存,这两个配成一样。

  • -Xmn1024m 最小允许分配的堆内存。

  • -XX:MetaspaceSize=1024M 初始元空间大小,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize时,适当提高该值。

  • -XX:MaxMetaspaceSize=1024M

  • -XX:+UseConcMarkSweepGC 并发标记清除(CMS)收集器

  • -XX:+CMSClassUnloadingEnabled

  • -XX:+HeapDumpOnOutOfMemoryError 表示当JVM发生OOM时,自动生成DUMP文件。

  • -XX:HeapDumpPath=${目录}参数表示生成DUMP文件的路径,也可以指定文件名称,例如:-XX:HeapDumpPath=${目录}/java_heapdump.hprof。如果不指定文件名,默认为:java___

  • -verbose:gc 输出GC日志 , -XX:+PrintGC 与 -verbose:gc 是一样的,可以认为-verbose:gc 是 -XX:+PrintGC的别名.

  • -XX:+PrintGCDetails 打印GC详细信息

  • -XX:+PrintGCTimeStamps 打印gc时间戳

  • -XX:+PrintGCDateStamps

  • -Xloggc:/appl/gc.log 定义gc日志目录

  • -XX:CMSInitiatingOccupancyFraction=75 是指设定CMS在对内存占用率达到75%的时候开始GC(因为CMS会有浮动垃圾,所以一般都较早启动GC);

  • -XX:+UseCMSInitiatingOccupancyOnly 只是用设定的回收阈值(上面指定的75%),如果不指定,JVM仅在第一次使用设定值,后续则自动调整

管理AJP端口

AJP是为 Tomcat 与 HTTP 服务器之间通信而定制的协议,能提供较高的通信速度和效率。如果tomcat前端放的是apache的时候,会使用到AJP这个连接器。由于我们公司前端是由nginx做的反向代理,因此不使用此连接器,因此需要注销掉该连接器

默认 Tomcat 是开启了对war包的热部署的。为了防止被植入木马等恶意程序,因此我们要关闭自动部署。
修改实例:

以上就是tomcat9 中怎么设置虚拟内存 ,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

0