Tomcat中Connector常用配置(备忘)

    Tomcat中server.xml有些配置信息是需要我们了解的,最起码知道如何进行简单的调试.

 

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"  redirectPort="8443" />

    默认情况下配置信息是这样的,在dev环境中,基本上可以用了.如下,简单的介绍Connector标签上还能挂载的其他配置项.

 

 

1. port 

    tomcat作为一个网络server端,它需要暴露一个socket端口来accept客户端的链接,可以通过port指定.

2. protocol

    使用的网络协议,表示tomcat使用何种方式来接受和处理client端请求,"HTTP/1.1"是默认值,等效于"org.apache.coyote.http11.Http11Protocol";还有熟悉的"AJP/1.3";关于HTTP和AJP两种方式的区别和性能优劣可以参见其他文档。【文档】

    在Tomcat 6.0之后,还提供了NIO的方式,可以有效的提升性能,特别是在大量长连接/数据上传+下载等web应用中.此时portocal="org.apache.coyote.http11.Http11NioProtocol".

    tomcat目前支持:BIO、NIO、NIO2、APR四种IO模型,默认为BIO。对于互联网应用,我们应该在NIO、NIO2之间做选择,因为它能够有效的提升性能(主要是并发能力),其中NIO2即为AIO,需要JDK 1.7+、Linux 2.6+才能支持。

    BIO:JDK 1.5+,tomcat 5.x+

    NIO:JDK 1.6+,tomcat 6.x+

    NIO2:JDK 1.7+,tomcat 7.x+

    为了保守起见,我们暂且基于NIO模式。

3. connectionTimeout

    当client与tomcat建立连接之后,在"connectionTimeout"时间之内,仍然没有得到client的请求数据,此时连接将会被断开.此值的设定需要考虑到网络稳定型,同时也有性能的考虑.它和tcp的配置选项中的"socket_timeout"仍有区别,connectionTimeout只会在链接建立之后,得到client发送http-request信息前有效.

    默认值为60000,即60秒;对于互联网应用,此值我们应该设置合理,比如20000。

4. maxHeaderCount

    http请求中header的最大个数,默认为100,"-1"表示不限制,通常不会关注此属性,不过在一些设计"扭曲"的web应用中,使用header传递大量参数(:post)和校验信息时,可能需要调整此值.如果请求中的header个数超过此限定值,请求将会被拒绝.(避免恶性攻击,建议此值设置为符合application的实际需要)

5. maxParameterCount

    http-get请求中允许传递的查询字符串的最大个数,尽管各种http浏览器(proxy工具)都会对http-get请求的长度和查询字符串的个数有限制,你仍然可以通过tomcat再次设定合适的值.parameter个数越多,事实上对tomcat的内存开支更大,很多时候处于安全或者实用的角度考虑,maxParameterCount的值都不会太大.默认值为10000,"-1"表示无限制.如果请求中参数的个数超过限定值,请求将会被拒绝.(为了避免恶性攻击,请根据application实际需要设定此值。)

    为了安全和规范,maxHeaderCount和maxParamterCount通常应该合理,建议设置为100等;如果请求参数再多,那么就建议使用post body发送或者拆分请求。

6. maxPostSize

    http-post请求中数据(body)的最大尺寸,单位:byte,默认值为2M.这对一些表单提交(较多文本域)有影响.可以适度调整此值,大文件上传一般会在client拆分成小文件,而不是直接发送.

7. URIEncoding

    http-get请求中,使用何种字符集对查询字符串进行编码,默认为"iso-8859-1".

8. useBodyEncodingForURI

    是否使用"Content-type"中指定的编码方式对http-get请求中查询字符串进行编码.如果为"true",将会忽略"URIEncoding"配置项,转而使用header中"content-Type"指定的编码方式.

9. maxThreads

    用于接收和处理client端请求的最大线程数,tomcat底层将采取线程池的方式来处理客户端请求,此参数标识这线程池的尺寸.maxThreads意味着tomcat能够并发执行request的个数.此值默认为200.一般情况下,在production环境中(根据物理机器配置,或者虚拟机的限制来做参考值),通常会有微调.较大的值并不能提升tomcat的负载能力,事实上"200"个线程数,已经足够大了.本人的线上环境为maxThreads=120.

    对于NIO模式下,maxThreads参数应该由CPU核心数决定,乐观起见,此值为:cpu核数 * 2。太大的值,并不能提升NIO性能,反而会使性能下降,因为线程切换(CS)将会占据CPU的大量时间。

10. compression

    是否对http相应数据启用Gzip压缩,可选值为"off"或者"on";这是一个值得商榷的参数;如果开启压缩,意味着较少的网络传输量,但是将消耗一定的CPU.如果你的应用有较高的CPU性能结余,且响应数据均是一些文本字符串,那么开启压缩,会有较大的收益.(并不是所有的浏览器都能够合理的支持gzip压缩,特别是低版本)

11. acceptCount

    当tomcat请求处理线程池中的所有线程都处于忙碌状态时,此时新建的链接将会被放入到pending队列,acceptCount即是此队列的容量,如果队列已满,此后所有的建立链接的请求(accept),都将被拒绝。默认为100。在高并发/短链接较多的环境中,可以适当增大此值;当长链接较多的场景中,可以将此值设置为0.

    这个参数将会在创建ServerSocket时带入,为TCP底层参数。如果请求均为短连接、请求耗时较短,我们可以适当增加此值。
12. address

    当物理server上绑定了多个IP地址时,可以通过“address”来指定tomcat-server需要bind的地址.默认将port关联到所有的ip上。
13. bufferSize

    链接在读取stream时,buffer数据的尺寸。(非socket buffer)
14. connectionLinger

    socket linger参数值。当socket即将关闭时(前)阻塞的时间,单位:秒。如果设置为-1,表示关闭linger。在BIO(Blocking IO)和AJP链接中默认为100,NIO中默认为25.
15. keepAliveTimeout

    当无实际数据交互时,链接被保持的时间,单位:毫秒。在未指定此属性时,将使用connectionTimeout作为keepAliveTimeout。通常和“HTTP keepAlive”选项协调工作。对于HTTP请求,server端为了支撑较高的吞吐量,不可能无限制的keepAlive一个链接(在设计要求上,这个和TCP通讯有本质的区别),keepAliveTimeout超时后,将会导致链接关闭。如果此tomcat设计为“长链接”服务,可以适当增加keepAliveTimeout值,否则无需设置此值。

 

    不过我们通常在tomcat上层还有nginx等代理服务器,我们通常希望链接keepAlive的机制由代理服务器控制,比如nginx来决定链接是否需要“保持活性”(注意,与keep_alive不同),当然nginx服务器只会保留极少的长连接,几乎所有的链接都会在使用结束后主动close;因为链接复用层,将有nginx与client保持,而不再是tomcat与client保持。太多的keepAlive链接,尽管提高了链接使用效率,但是对负载均衡不利。
16. maxKeepAliveRequests

    tomcat需要保持的最大请求数,即处于keepAlive状态的请求的个数,建议此值为maxThreads * 0.5,不得大于maxThreads,否则将得不到预期的效果。-1表示不限制,1表示关闭keepAlive机制。

17、maxConnections

    tomcat允许接收和处理的最大链接数,对于BIO而言此值默认与maxThreads参数一样,对于NIO而言此值默认为10000。对于tomcat已经接受和正在处理的线程数达到此值,server将允许继续accept新链接但是不会处理它们,这些链接将会被阻塞直到连接数降低到此值(server将不会从这些socket中读取数据,而是将它们的句柄buffer起来)。最终server是否可以继续accept新的链接,取决于acceptCount值,因为此值是在创建ServerSocket时传递的参数,超过此值后,链接请求将会被拒绝。

   此值还受限于系统的ulimit、CPU、内存等配置。

18、acceptorThreadCount:默认为1,表示用于accept新链接的线程个数,如果在多核CPU架构下,此值可以设置为2,官方不建议设定超过2个的值。

19、maxHttpHeaderSize:http头的最大尺寸,默认为8192,单位为“字节”。

20、minSpareThreads:线程池中,保持活跃的线程的最小数量,默认为10。

21、SSLEnabled:是否开启ssl支持,默认为false;通常SSL应该在nginx等代理层,我们不应该让tomcat直接接入。

 

【如下为NIO配置】

22、pollerThreadCount:表示用于polling IO事件的线程个数,默认为1。在多核CPU架构下,我们可以设置为2来提高polling的能力,官方不建议设置大于2的值,因为锁的竞争会导致性能下降,事实上一个线程也足够快速。

23、useSendfile:是否开启sendfile特性,默认为true。对于web应用而言,通常project中还会包含一定数量的静态资源,比如图片、CSS、js、html等,sendfile在一定程度上可以提高性能。

24、selectorTimeout:选择器阻塞的时间,如果你进行过NIO开发,应该知道此参数的含义,默认值为1000毫秒。此值不要太大,因为selector线程本身还需要用来清理已关闭的链接等。

25、selectorPool.maxSelectors:NIO中选择的个数,默认值为200。NIO中我们可以使用多个selector,每个selector负责注册一定数量的NIOChannel,这样可以有效的提高selector选择效率;通常我们建议此值与maxThreads值一致,或者小于maxThreads,但是大于maxThreads其实意义并不大。

    为了开启此特性,我们需要在catalina.sh中增加一个启动命令参数:

CATALINA_OPTS="-Dorg.apache.tomcat.util.net.NioSelectorShared=false"

    官方的意思是使用command-line-options="-Dorg.apache.tomcat.util.net.NioSelectorShared=false",但是经过测试发现并不能生效。这个命令参数的意思是“不使用共享的selector,而是每个thread单独使用各自的selector。”

 

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
               connectionTimeout="20000"
               maxHeaderCount="64"
               maxParameterCount="64"
               maxHttpHeaderSize="8192"
               URIEncoding="UTF-8"
               useBodyEncodingForURI="false"
               maxThreads="128"
               minSpareThreads="12"
               acceptCount="1024"
               connectionLinger="-1"
               keepAliveTimeout="60"
               maxKeepAliveRequests="32"
               maxConnections="10000"
               acceptorThreadCount="1"
               pollerThreadCount="2"
               selectorTimeout="1000"
               useSendfile="true"
               selectorPool.maxSelectors="128"
               redirectPort="8443" />

 

参考:

https://tomcat.apache.org/tomcat-7.0-doc/config/http.html

https://tomcat.apache.org/tomcat-8.0-doc/config/http.html

MiniMax H3 + ComfyUI 工作流搭建指南:从整合包到视频生成 AI视频生成正成为内容创作的新基础设施,而ComfyUI作为可视化工作流引擎,将复杂的模型推理过程拆解为节点与连线,让本地视频生成变得可复用、可批量。理解这一原理后,用户无需编写代码,只需掌握模型加载、提示词控制、采样与解码的基本链路,即可搭建出稳定的视频生产管线。MiniMax H3作为前沿视频生成模型,在ComfyUI中通过权重文件和自定义节点落地,配合整合包可大幅降低环境配置门槛。从硬件评估、目录结构到节点连接与参数调优,本文系统性梳理了从零跑通一条视频生成工作流的完整路径,帮助用户在批量素材生成、风 阅读详情

相关推荐

海康工业相机LabVIEW二次开发实战——参数配置优化与图像高效存储

本文详细介绍了海康工业相机在LabVIEW平台上的二次开发实战,重点解析了相机参数配置的优化方法与图像高效存储策略。通过剖析曝光、增益、触发模式等核心参数的设置逻辑,并结合生产者-消费者设计模式,指导开发者构建稳定、高效的图像采集与异步存储流程,有效提升工业视觉项目的开发效率与系统稳定性。

weixin_29306317的博客 221

protocol=http/1.1, code=400, message=Bad Request, url=*********

GET /api/vms?offset=0&limit=1000&filter[]="name='test%'"&expand=resources&attributes=name,vendor,guid&sort_by=name&sort_order=asc 调用cloudforms rest api时,遇到的问题,就是filter[]="name='test%'"这样的url参数形式。 bad request, code=400请求时,客户端报错

随笔记录-分享&记忆 9043

GD32的低功耗模式:睡眠、深度睡眠与待机模式

GD32F4xx提供三种主要低功耗模式,功耗逐级降低:睡眠模式 (Sleep Mode)关闭CPU时钟,保持外设运行任意中断/事件唤醒深度睡眠模式 (DeepSleep Mode)关闭CPU和大部分外设时钟需特定唤醒源(外部中断、RTC等)待机模式 (Standby Mode)最低功耗,仅备份域维持供电仅支持复位、RTC、WKUP引脚唤醒。

波风水门的博客 2276

HTTP状态代码定义(优快云最全整理,请收藏)

超文本传输​​协议的一部分-HTTP / 1.1 RFC 2616 Fielding等。 10状态码定义 每个状态代码的说明如下,包括对它可以遵循的方法的描述以及响应中所需的任何元信息。 10.1信息性1xx 此类状态码表示临时响应,仅由状态行和可选标头组成,并以空行终止。此类状态码没有必需的标题。由于HTTP / 1.0没有定义任何1xx状态代码,因此,除非在实验条件下,否则服务器不得向HTTP / 1.0客户端发送1xx响应。 即使客户端不希望收到100(继续)状态消息,客户端也必须准备在接受常规响应之

weixin_48594878的博客 432

面试真题集(十六):TensorRT基础

TensorRT面试真题解析:从模型优化到推理部署 本文精选了14道TensorRT面试题,涵盖选择题、简答题和场景题,深度考察推理工程师对TensorRT核心技术的理解。内容聚焦三个关键维度: 基础概念 FP16推理中Softmax层为何需保持FP32(数值稳定性) INT8校准原理(EntropyCalibrator2的鲁棒性优势) Plugin V3接口的构建/运行分离设计 性能优化 Conv-BN-ReLU融合减少40-60%延迟的关键机制(访存优化) 动态Shape配置策略(min/opt/max

PeterPan的博客 71

图神经网络在金融风险传播分析中的应用

《图神经网络在金融风险传播分析中的应用》 摘要 本文旨在探讨图神经网络(Graph Neural Networks, GNN)在金融风险传播分析中的应用。首先,本文简要介绍了图神经网络的基本概念、发展历史以及其在各类应用场景中的重要性。接着,详细介绍了图神经网络的核心算法,包括图卷积神经网

AI天才研究院 1279

HTTP协议详解之HTTP/1.1

1、写在前面:学习的时候一定要对照官方文档、结合分析工具,才能深入理解。

weixin_39399492的博客 2万+

2024年CSP-X复赛真题题解(T1:购物)

2024年CSP-X复赛真题题解(T1:购物)

王老师青少年编程 1180

tomcat配置https协议(SSL机制)

以下为实际项目中tomcat配置https协议 一、概念解释: HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了 SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。SSL目前的版本是3.

Asan 8420

手把手教你从入门到精通C# Modbus通信

本文是《Modbus通信从入门到精通》的导读,本专栏将会详细介绍ModusRTU 、ModbusASCII、ModbusTCP这三种协议的C#实现,由一个高级工程师多年实战经验总结而成,绝对干货!

qq_34059233的博客 1万+

[SC]SystemC在CPU/GPU验证中的应用(六)

本文提供了一个SystemC学习路线图,包含50个由浅入深的编程实例,涵盖从基础模块到复杂SoC建模的全过程。示例包括:基础模块(时钟、计数器)、通道(FIFO、握手)、TLM2.0接口、总线模型(AXI-Lite)、CPU/GPU内核实现、功耗分析、断言验证等。重点展示了SystemC在硬件验证中的关键应用:VCD波形生成、UVM-SystemC框架、Verilog DPI协同仿真、Python集成、NoC路由器和完整SoC建模(CPU+Cache+DRAM+互连)。每个示例提供完整代码和详细注释,建议分

元直的博客 1492

【转】Tomcat中Connector常用配置(备忘)

本文转载自http://deep.hongxi.org Tomcat中server.xml有些配置信息是需要我们了解的,最起码知道如何进行简单的调试.   &lt;Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"  redirectPort="8443" /&gt;        默认情况下配置信息是...

武汉红喜 1774

利用Dify构建文档内容的分析对比

本次主要做了一些workflow和Agent的应用实现,供大家参考。主要目的是为了进行两个内部报告文件的内容对比,特别是报告中的各类审批表、申请表、推荐表和流程对比,本地数据通过知识库方式分别加载到两个知识库中,编制工作流针对同一个问题进行知识库检索,之后将查询结果进行合并,再一起提交给LLM进行对比,最终将对比分析结果以markdown方式返回显示。主要包括如何构建知识库,如何设计workflow、如何将工作流发布为工具、如何设计提示词、如何在agent中引入前面发布的工具,最终通过agent实现与用户交

hhue2007的专栏 2525

tomcat-server.xml配置(https),备忘录

<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyr

花易折的博客 909

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

备忘 Tomcat 配置文件

备忘 Tomcat 配置文件 Tomcat6.0.20/conf/context.xml          WEB-INF/web.xml                    -->             on

品味的家园 606

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

tomcat整理备忘

Tomcat分二种组件,一种是可以包含其它组件的容器组件: C-H-E-S(chess),非容器组件包含在容器组件中,最重要的一种非容器组件:Connector 1.Server标签并不是组件.不要把它混淆成S组件.Service组件包含了子组件构成了一个完整的服务器实例.2.一个JSP/Servlet容器是指一个Engine组件,一个服务器是指一个Service组件3.per proj...

weixin_34354945的博客 102

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Tomcat JS资源压缩配置修改(备忘)

server.xml 修改前: <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" maxThreads="400" acceptCount="200" redirectPort="8443" URIEncoding="UTF-8" />

wwwcomy的程序猿感悟 892

IPV4+IPV6备忘

NGINX反向代理IPV6至IPV4: server { listen [240e:30b:20d:9200::1008]:8000; #server_name nginx_server_ip; server_name ipv6test.com; location /app { proxy_pass http://192.168.2.11:8080/app; } } NGINX监听...

weixin_44265105的博客 380

Tomcat server.xml 学习备忘

转自http://dcbjavaeye.iteye.com/blog/254193       tomcat server.xml配置详解 元素名 属性 解释 server port 指定一个端口,这个端口负责监听关闭tomcat的请求 shutdown 指定向端口发送的命令字符串 ...

水滴石穿 170

备忘:启用 Tomcat 下的 HTTPS

首先说明,本文内容在 GOOGLE 上能搜到,所以是原创但不是首创。在此记录,仅供备忘。今天做了个实验,在 Tomcat 5.5 中启用 HTTPS 的连接。以前都是通过 APACHE 来做的,这回图省事,直接用 TOMCAT 了,没想到还挺麻烦。重要提示:两种容易出错的情况1、keystore的密码与tomcat的主密码不一致;在接下来的步骤中,请把这两个密码输入成相同的;2、用来生成keyst...

atomti 166

tomcat7 - cacti 备忘

增加安全管理设定 /usr/local/tomcat/conf/tomcat-users.xml                username" password="password"  roles="manager-gui,manager-script,manager-jmx,manager-status"  />   恢复/u

Terry Tsang 1584

TOMCAT架构分析

虽然分析过源码,但一直没时间,先贴一片别人的吧,备忘。   TOMCAT源码分析(启动框架) 前言:    本文是我阅读了TOMCAT源码后的一些心得。 主要是讲解TOMCAT的系统框架, 以及启动流程。若有错漏之处,敬请批评指教! 建议:    毕竟TOMCAT的框架还是比较复杂的, 单是从文字上理解, 是不那么容易掌握TOMCAT的框架的。 所以得实践、实践、再实践。 建议

CNM3333的专栏 818

Tomcat学习之Tomcat架构

前段时间想学习下tomcat,在网上找了一些资料,放在这里以备忘: 1,tomcat架构: Server:    其实就是BackGroud程序, 在Tomcat里面的Server的用处是启动和监听服务端事件(诸如重启、关闭等命令。 在tomcat的标准配置文件:server.xml里面, 我们可以看到“”这里的"SHUTDOWN"就是server在监听服务端事件的时候所使用的命令字) S

u011746030的专栏 1595

Tomcat 架构探索

花了一个礼拜的时间阅读了 how tomcat works ,本文基于此书,整理了一下 Tomcat 5 的基本架构,其实也没什么多复杂的东西,无非是解析 Http 请求,然后调用相应的 Servlet 。另推荐看 CSAPP 的网络编程那一章 本文不以别人能看懂为目的,仅作自己备忘笔记只用。 基本架构 Tomcat 由两个模块协同合作 connector container c...

jxausea的专栏 106
上一篇: Tomcat请求乱码(备忘)
下一篇: JDBC中Connection解惑
iteye_19607
博客等级 码龄8年 34粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值