Tomcat修改service.xml性能调优 增加最大并发连接数

Tomcat部署优化与压力测试实战:从JVM调优到高并发压测全链路指南 在Java Web应用开发与运维中,应用服务器性能优化是保障系统稳定高效运行的核心环节。其原理涉及JVM内存管理、线程池模型及I/O处理机制,通过合理配置可显著提升吞吐量并降低延迟,这对于构建高可用、可扩展的互联网服务具有重要技术价值。典型的应用场景包括电商大促、秒杀活动等高并发业务。本文将围绕Tomcat这一广泛使用的Servlet容器,深入探讨其部署规范、JVM垃圾回收策略(如G1GC)与连接器参数调优,并结合压力测试工具(如JMeter、ApacheBench)进行全链路性能验证,为工程实践提供从环境 阅读详情

 详细配置:

<Connector executor="tomcatThreadPool"
               port="80" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

 

1、  Tomcat的外部调优
Java虚拟机(JVM)性能优化,可以通过以下两个参数来设置虚拟机使用内存的大小,-Xms<size>(JVM初始化堆的大小)和-Xmx<size>(JVM堆的最大值)。
这两个值的大小一般根据需要进行设置。初始化堆的大小执行了虚拟机在启动时向系统申请的内存的大小。一般而言,这个参数不重要。但是有的应用程序在大负载 的情况下会急剧地占用更多的内存,此时这个参数就是显得非常重要,如果虚拟机启动时设置使用的内存比较小而在这种情况下有许多对象进行初始化,虚拟机就必 须重复地增加内存来满足使用。由于这种原因,我们一般把-Xms和-Xmx设为一样大,而堆的最大值受限于系统使用的物理内存。一般使用数据量较大的应用 程序会使用持久对象,内存使用有可能迅速地增长。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的 最大值设置为可用内存的最大值的80%。
  Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。
Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置:
  JAVA_OPTS='-Xms【初始化内存大小】-Xmx【可以使用的最大内存】'
需要把这个两个参数值调大。例如:AVA_OPTS='-Xms256m-Xmx512m',表示初始化内存为256MB,可以使用的最大内存为512MB。
       另外需要考虑的是Java提供的垃圾回收机制。虚拟机的堆大小决定了虚拟机花费在收集垃圾上的时间和频度。收集垃圾可以接受的速度与应用有关,应该通过分 析实际的垃圾收集的时间和频率来调整。如果堆的大小很大,那么完全垃圾收集就会很慢,但是频度会降低。如果你把堆的大小和内存的需要一致,完全收集就很 快,但是会更加频繁。调整堆大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求。在基准测试的 时候,为保证最好的性能,要把堆的大小设大,保证垃圾收集不在整个基准测试的过程中出现,   如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过3-5秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详 细输出,研究垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的80%作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾 收集不是并行的。
2、  Tomcat的内部调优
(一)禁止DNS查找
有时候我们的应用可能要记录客户端的信息,两种方式,一是记录客户端的数字IP地址,另一个是在DNS数据中查找真实的主机名。DNS查找会增加网络通 信,以致造成了网络延迟。要消除这个延迟,我们可以禁掉DNS查找。这时我们的应用再调用getRemoteHost( )方法时,它就只会得到数字IP地址。这个配置是在Tomcat的serve.xml文件中,Connector对象的enableLookups属性, 如下:
<!--
Define a non-SSLCoyote HTTP/1.1 Connector on port 8080
-->
<Connector
    className="org.apache.coyote.tomcat4.CoyoteConnector"
    port="8080"minProcessors="5" maxProcessors="75"
    enableLookups="true" redirectPort="8443"
    acceptCount="10" debug="0" connectionTimeout="20000"
    useURIValidationHack="false"
/>
在生产系统中,除非应用要得到所有客户端真实的主机名,这个通常是建议禁掉的。实在不行这样的工作我们可以在Tomcat的外面做。在一个流量较小的 Servr这种修改的效果可能不是十分明显,但是对于某些站点来说,也许突然之间流量暴增也说不定呢,比如,前段时间的奥运票务网站,哈哈!
(二)调整线程数
另一个影响性能的是Connector所使用的进程数。Tomcat使用一个线程池来提高请求响应的速度。Java中的一个线程单独同操作系统交互,并且有它自己的本地内存,以及同进程内的其他线程分享部分共享内存。
我们可以通过修改Connector对象的minProcessors和maxProcessors来控制线程数。这个数字也许在刚上线的时候进行了适当 的设置,可是当用户数变多的时候我们就要增加配置数了。minProcessors值应该设置的足够大来处理最小负载。当用户变多的时候,Tomcat会 分配更多的线程,不超过maxProcessors。上限也一定要设置的适当,以免使server的内存超过JVM的内存限制而挂掉。
(三)加速JSP的编译
第一次访问JSP的时候,它会被转换成Java servlet源码,然后编译成二进制代码。这个过程中,我们是可以控制所使用的编译器的。默认情况,Tomcat所使用的是和命令行上执行javac时同样的编译器。其实有更快的编译器的,我们可以利用这些来提高JSP的编译速度。

五、Tomcat服务器的监控
1、Tomcat自带的监控指标servelet
第一步:在配置文件中增加用户访问的权限。修改conf/tomcat-users.xml文件,在其中加入一行 <user username="用户名" password="密码" roles="manager"/>
第二步:在IE浏览器中输入http://IP地址:端口号/manager/status
第三步:在弹出的对话框中输入第一步设置的用户名和密码,即可查看到应用服务器的相关性能指标数据。
2、使用专门的工具进行监控,网上很多在此就不再赘述。

 

 

在tomcat配置文件server.xml中的配置中,和连接数相关的参数有:
minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
acceptCount:允许的最大连接数,即等待队列,指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。应大于等于maxProcessors,默认值为100,
enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数应同时加大这两个参数。
web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。
3、server.xml配置简介
下面讲述这个文件中的基本配置信息,更具体的配置信息请参考tomcat的文档:
    server:
          1、port指定一个端口,这个端口负责监听关闭tomcat的请求
          2、shutdown指定向端口发送的命令字符串
    service:
          1、name指定service的名字
    Connector(表示客户端和service之间的连接):
          1、port指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求
          2、minProcessors服务器启动时创建的处理请求的线程数
          3、maxProcessors最大可以创建的处理请求的线程数
          4、enableLookups如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
          5、redirectPort指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
          6、acceptCount指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
          7、connectionTimeout指定超时的时间数(以毫秒为单位)
线程数可以大致上用“同时在线人数*每秒用户操作次数(每秒的连接数)*系统平均操作时间(服务器的处理时间)”来计算。
    Engine(表示指定service中的请求处理机,接收和处理来自Connector的请求):
          1、defaultHost指定缺省的处理请求的主机名,它至少与其中的一个host元素name属性值是一样的。
    Context(表示一个web应用程序):
          1、docBase应用程序的路径或者是WAR文件存放的路径
          2、path表示此web应用程序的url的前缀,这样请求的url为
http://localhost:8080/path/****
          3、reloadable这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序
    host(表示一个虚拟主机):
          1、name指定主机名
          2、appBase应用程序基本目录,即存放应用程序的目录
          3、unpackWARs如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
    Logger(表示日志,调试和错误信息):
          1、className指定logger使用的类名,此类必须实现org.apache.catalina.Logger接口
          2、prefix指定log文件的前缀
          3、suffix指定log文件的后缀
          4、timestamp如果为true,则log文件名中要加入时间,例:localhost_log.2001-10-04.txt
  Realm(表示存放用户名,密码及role的数据库):
          1、className指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口
  Valve(功能与Logger差不多,其prefix和suffix属性解释和Logger中的一样):
          1、className指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve
类可以记录应用程序的访问信息
directory(指定log文件存放的位置):
   1、pattern有两个值,common 

泛微E10 eBuilder低代码平台避坑指南:新手最容易犯的5个错误及解决方案 本文针对泛微E10 eBuilder低代码平台的新手开发者,总结了5个最常见错误及解决方案,包括表单联动配置、流程设计权限、动作流时序、数据加工类型转换和权限管理过度配置等问题。通过实战经验和代码示例,帮助开发者避开常见陷阱,提升开发效率。 阅读详情

相关推荐

基于51单片机的智能灌溉系统

基于51单片机的智能灌溉系统

jiejiezuishuai的博客 2103

Tomcat 7最大并发连接数的正确修改方法

这是个很简单的问题,但是搜了一圈,发现大家都写错了。所以这里总结一下: 几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的): -------------------------------------------- 在tomcat配置文件server.xml中的配置中,和连接数相关的参数有:    minProcess

qysh123的专栏 3万+

一文读懂无人机AI识别算法,原理、技术、应用

本文详细介绍了无人机识别算法的工作原理、技术优势以及在多个行业的应用前景,展现了其在提升安全监控、资源管理和应急响应中的关键作用。尽管无人机识别算法在多个领域展现出巨大潜力,但仍面临技术挑战,如算法的准确性、数据的实时处理能力以及对复杂环境的适应性。4. 消防与城市管理: 无人机识别算法在消防和城市管理中的应用,为相关部门提供了及时的信息支持,提升了应急处置能力和城市管理水平。1. 公安监控: 无人机识别算法在公安领域的应用,可以实时识别犯罪嫌疑人和违法行为,有效提升城市治安管理的智能化水平。

foiadrone的博客 1849

tomcat调优中配置Executor和Connector

port="80" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700" connectionTimeout="20000" /> maxThreads="X" 表示最多同时处理X个连接 minSpareThreads="X" 初始化X个连接 m

u011649691的博客 1万+

昇腾310B实战:FFmpeg硬件加速全流程解析与性能优化

本文详细解析了昇腾310B与FFmpeg硬件加速的全流程,包括环境配置、性能优化及常见问题排查。通过实战案例展示,昇腾310B在视频转码中性能提升可达6倍,同时降低功耗,特别适合多媒体处理和高性能计算场景。

m3n5b7v8c9x的博客 738

Cesium中实现GPU计算的泥石流地形侵蚀

通过模拟分析,可以提前识别可能发生泥石流的区域,为防灾减灾提供依据,及时发布预警,避免或减少人员伤亡和财产损失。:在建设公路、桥梁、水库等基础设施时,通过泥石流模拟分析,可以预测泥石流可能对这些设施的影响,帮助工程设计者采取合适的防护措施,确保设施的安全性。:模拟分析有助于为灾后救援工作提供科学依据,确定受灾区域的范围、救援难度等,为救援队伍制定合理的行动方案,提升救援效率。:泥石流是山区常见的地质灾害之一,通过模拟分析可以评估某一地区发生泥石流的风险,指导土地使用规划、人口迁移等决策。

weixin_43481439的博客 1321

通过post修改别人服务器时间,通过修改AJAX超时timeout设置解决服务端配置connectionTimeout、worker.master.socket_timeout及Timeout 的连接...

一、前言最近通过前端Ext.Ajax.request请求等待大量数据同步到Mysql,希望任务未完成之前前端页面一直处于等待中状态,由于后端tomcat的connectionTimeout="20000",因此20秒后前端就报异常error提示,相关配置如下前端Ext.Ajax.request默认配置如下Ext.getCmp('index_bar_processing').setText("处理中...

weixin_39548787的博客 381

Android各个版本存储权限适配

虽然 Android10 上面提出了外部存储分区的概念,不过之前的版本中,我们只要为应用添加了。1、AndroidManifest添加权限设置。3、拒绝权限时跳转详细设置页面。就可以像之前的方式一样访问手机的外部存储空间。2、请求所有文件管理权限。

sig321的专栏 1848

tomcat配置详解

 元素它代表整个容器,是Tomcat实例的顶层元素.由org.apache.catalina.Server接口来定义.它包含一个元素.并且它不能做为任何元素的子元素.1>className指定实现org.apache.catalina.Server接口的类.默认值为org.apache.catalina.core.StandardServer2>port指定Tomcat监听shutdown命令端口

wangxiaoyi2的专栏 601

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第9套模块A:网络构建 & (三)无线网络配置+(四)出口网络配置-命令配置

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第9套模块A:网络构建 & (三)无线网络配置+(四)出口网络配置-命令配置

君逍遥o 1018

基于Matlab的深度学习OFDM系统信号检测

在接收端,我们首先去除循环前缀,然后对接收到的信号进行FFT变换和QAM解调。在通信系统中,正交频分复用(Orthogonal Frequency Division Multiplexing,OFDM)是一种常用的调制技术,它可以将高速数据流分成若干个低速子载波进行传输,提高了信道利用率和抗干扰性能。接下来,我们使用训练好的神经网络对QAM调制后的数据进行检测,得到估计的FFT变换结果。深度学习方法可以通过大量的训练数据来学习信号的特征,并具有一定的适应能力,在某些情况下可能能够获得更好的检测性能。

2301_79325657的博客 296

Tomcat性能优化

因为Tomcat不同版本之间的优化配置有所差别,这里以Tomcat7为例进行讲解。 1.禁用AJP协议,达到在集群的时候提高处理请求的时间。 禁用方法:在server.xml中,将 &lt; Connector port=“8009” protocol=“AJP/1.3” redirectPort=“8443” /&gt; 注释掉,重新启动tomcat,这时我们可以看到控制台上已经不存在“aj...

wunianisme的博客 430

Python爬虫教程:抓取区块链交易信息及加密货币市场数据

随着区块链技术和加密货币的迅猛发展,区块链交易和加密货币市场的数据逐渐成为金融、技术、经济研究等领域的热点。对于开发者和研究者而言,实时获取区块链交易数据和加密货币市场行情,对于投资分析、市场预测、技术研究等具有重要的参考价值。本文将通过Python爬虫技术,介绍如何抓取区块链交易信息及加密货币市场数据,详细阐述数据获取的原理、技术方案、实现方法以及抓取到的数据的存储与分析。我们将依托最新的爬虫技术,如requestsSeleniumScrapy,以及相关的数据处理库(如pandasmatplotlib。

2201_76125261的博客 2778

Tomcat并发数优化,修改service.xml性能调优 增加最大并发连接数

可以在控制台的启动信息里看见,默认状态下没有被打开nio配置,启动时的信息,如下: 2010-2-1 12:59:40 org.apache.coyote.http11.Http11Protocol init 信息: Initializing Coyote HTTP/1.1 on http-8080 2010-2-1 12:59:40 org.apache.catalina.startup.Cat...

大JAVA解决方案 1639

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Tomcat批改service.xml性能调优 增加最大并发连接数

1、  Tomcat的外部调优 JAVA虚拟机(JVM)性能优化,可以通过以下两个参数来设置虚拟机使用内存的大小,-Xms(JVM初始化堆的大小)和-Xmx(JVM堆的最大值)。 这两个值的大小一般根据需要进行设置。初始化堆的大小执行了虚拟机在启动时向系统申请的内存的大小。一般而言,这个参数不重要。但是有的应用程序在大负载的情况下会急剧地占用更多的内存,此时这个参数就是显得非常重要,如果虚拟机

Java海洋 1353

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Tomcat 9.0.x server.xml 多端口配置:3种Service与Connector方案性能对比

本文深入解析Tomcat 9.0.x中server.xml的多端口配置方案,包括多Service、单Service多Connector和多Host三种方案,并通过性能测试数据对比其优劣。针对不同场景提供优化建议,帮助开发者在Java Web应用部署中实现高效资源利用和环境隔离。

354

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Tomcat 8.5 安装配置与生产环境调优全攻略

Servlet容器是Java Web应用运行的核心环境,它负责解析和执行Servlet与JSP规范,为动态网页提供支持。其工作原理是基于请求-响应模型,通过连接器接收HTTP请求,并交由引擎处理。在技术价值上,一个高效稳定的Servlet容器能显著提升应用并发处理能力和资源利用率。无论是开发测试还是生产部署,选择合适的容器并进行合理配置都至关重要。Apache Tomcat作为最轻量、使用最广泛的Servlet容器实现,其8.5版本基于Servlet 3.1和JSP 2.3规范,对Java 7和8有良好支持

weixin_33800463的博客 306

Linux下Tomcat安装配置实战:权限、JVM调优与systemd服务化

Tomcat作为Java Web应用的核心容器,其在Linux环境的部署远不止解压启动——本质是Linux系统权限模型、JVM类加载与内存管理、网络栈绑定及服务化治理的综合工程实践。理解`/opt/tomcat`目录权限继承规则、`systemd`服务单元中`Environment`变量的作用域、`JAVA_HOME`与`CATALINA_HOME`的隔离逻辑,是规避`Permission denied`和`JAVA_HOME not set`等高频故障的前提;而科学设定`-Xms/-Xmx`需结合`fre

weixin_34128237的博客 399

Ubuntu 18.04下Tomcat 9手动部署与JVM调优实战指南

Tomcat 是 Java Web 应用最主流的 Servlet 容器,其运行依赖于稳定、兼容且可精细调控的 JVM 环境。理解 Tomcat 启动流程、类加载机制与连接器原理,是保障 Web 服务高可用的基础;而 JVM 内存模型(尤其是 Metaspace、堆内存与 GC 策略)直接影响应用在低配环境下的稳定性。在 Ubuntu 18.04 这类长期支持但内核与 cgroup 版本受限的系统中,OpenJDK 11 成为兼顾兼容性、安全更新与内存管理能力的最优选。本文聚焦真实生产约束——老旧硬件、遗留

weixin_33693070的博客 364
上一篇: 转载tomcat高并发配置调优
下一篇: 集群下的kafka实现多线程消费
java_wwwww
博客等级 码龄9年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值