tomcat的优化

TOMCAT的优化

tomcat的优化主要是从三个方面进行的,第一个是 tomcat配置的优化第二是对JVM虚拟机的优化第三是对Linux系统内核的优化,配置文件中的优化主要在tomcat中server.xml文件夹内

tomcat配置文件的优化

1、 maxThreads:

Tomcat 使用线程来处理接收的每个请求,这个值表示 Tomcat 可创建的最大的线程数,默认值是 200。

修改tomcat/conf/server.xml的配置文件,并修改 在模块中进行修改,如图

bash 复制代码
<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
                maxThreads="300"    />

把TomCat的最大并发量改成300

2、minSpareThreads:

最小空闲线程数,Tomcat 启动时的初始化线程数,表示即使没有人使用也开这么多空线程等待,默认值是 10

下面是在第一题基础上把最小空闲线程数改成20

在Connector设置块中加入

bash 复制代码
minSpareThreads="20"

3、connnectionTimeout;

网络连接超时,单位:毫秒,设置为 0 表示永不超时,这样设置有隐患的。通常默认 20000 毫秒就可以。

可以在Connector模块里加入

bash 复制代码
connnectionTimeout="30000"

就可以设置完成长连接持续时间30秒

4、maxKeepAliveRequests

最大连接请求数

它用于指定允许的最大持久连接(Keep-Alive)请求数。持久连接允许客户端在单个TCP连接上发送多个HTTP请求,以减少连接的开销,提高性能。通俗的来说,就是一次长连接允许发送的HTTP请求数,通常默认是-1也就是不限制

在Connector模块里加入

bash 复制代码
maxKeepAliveRequests="100"

5、acceptCount

它用于指定在Tomcat已经满负荷工作时,接受新连接的请求数量。当所有的处理线程都在工作时,新的连接请求会被放置在一个队列中等待处理。默认值:acceptCount的默认值通常是100。这意味着当Tomcat的处理线程已满时,最多会接受100个新的连接请求,其余请求会被拒绝。

bash 复制代码
acceptCount="200"

将最大等待链接数设置成200

6、enableLookups

用于指定是否进行DNS反查(反向DNS查找)以返回客户端主机的主机名。将其设置为 true 表示Tomcat会尝试通过客户端IP地址查找对应的主机名,而将其设置为 false 则表示Tomcat不进行反查,直接返回IP地址,以提高性能。默认值:通常情况下,enableLookups 的默认值为 true,这意味着Tomcat会尝试进行DNS反查以获取客户端主机的主机名。从性能方面考虑建议关闭

在Connector模块里加入可以关闭DNS反查

bash 复制代码
enableLookups="false"

JVM虚拟机的优化

catalina.sh 中设置

bash 复制代码
JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -XX:PermSize=1024m -XX:MaxPermSize=1024m -Xmn768m"
  1. -server:这个选项启用了JVM的Server模式,它是一种优化模式,适用于多核服务器,可以提供更好的性能。Server模式主要优化了编译和运行时的性能,适合长时间运行的应用程序。通常情况下,使用 -server 是一个好的做法,特别是在生产环境中。

  2. -Xms2048m -Xmx2048m:这两个选项用于设置JVM的堆内存大小。-Xms 设置堆的初始大小,-Xmx 设置堆的最大大小。在你的配置中,堆内存被设置为2GB,这意味着JVM会启动时分配2GB的初始堆空间,并且允许堆的最大大小达到2GB。这个设置可以根据你的应用程序和服务器的性能需求进行调整,通常设置为物理内存的一部分,以避免频繁的垃圾回收。

  3. -XX:PermSize=1024m -XX:MaxPermSize=1024m:这两个选项用于设置JVM的永久代(PermGen)大小。永久代主要用于存储类的元数据信息,例如类的结构、方法、字段等。在Java 8及更高版本中,永久代被元数据区(Metaspace)取代,因此这些选项在Java 8及以后的版本中不再有效。在你的配置中,永久代被设置为1GB,这通常足够存储大多数应用程序的类元数据。类元数据的大小取决于应用程序的复杂性和使用的库。

  4. -Xmn:这个选项用于设置JVM堆内存中的新生代大小。新生代是堆内存的一部分,用于存储新创建的对象。在你的配置中,新生代被设置为768MB,这是堆内存大小的3/8。通常情况下,新生代的大小应根据应用程序的内存分配模式和性能需求进行调整。较大的新生代可以容纳更多的新对象,但也会导致更频繁的垃圾回收。

相关推荐
阿伟*rui19 小时前
认识微服务,微服务的拆分,服务治理(nacos注册中心,远程调用)
微服务·架构·firefox
尢词1 天前
SpringMVC
java·spring·java-ee·tomcat·maven
清风百草1 天前
【04】【Maven项目热部署】将Maven项目热部署到远程tomcat服务器上
tomcat·maven项目热部署
蒋桐城2 天前
Tomcat 启动卡住,日志显示 At least one JAR was scanned for TLDs yet contained no TLDs.
java·tomcat
小样还想跑2 天前
Vue2中使用firefox的pdfjs进行文件文件流预览
前端·firefox
qiaosaifei2 天前
SpringBoot项目中替换指定版本的tomcat
spring boot·后端·tomcat
雷神乐乐2 天前
IDEA构建JavaWeb项目,并通过Tomcat成功运行
服务器·tomcat·javaweb
陈大爷(有低保)2 天前
数据库连接池JNDI
数据库·mysql·tomcat
Pioneer000013 天前
Spring Boot应用开发:从入门到精通
spring boot·后端·firefox
笔墨登场说说3 天前
JDK 里面的线程池和Tomcat线程池的区别
java·servlet·tomcat