Tomcat中Connector常用配置(备忘)

Tomcat配置SSL证书 本地即服务器以tomcat作为服务器的ssl证书配置,开放https安全访问。 阅读详情

    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

单视图几何Vanish Point(消失点/灭点)计算方法——Robert_T_Collins(罗伯特·柯林斯)算法 阅读详情

相关推荐

gdb对dwarf调试信息的解析和使用

gdb的对dwarf的调试信息的解析到使用的过程分析

JS072110的专栏 9568

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请求时,客户端报错

随笔记录-分享&记忆 9044

洛谷P5707 【深基2.例12】上学迟到(c语言)

第一篇题解 题目描述 yyy 的学校要求早上 8 点前到达。学校到 yyy 的家一共有 s(s\le 10000)s(s≤10000) 米,而 yyy 可以以 v(v<10000)v(v<10000) 米每分钟的速度匀速走到学校。此外在上学路上它还要额外花 10 分钟时间进行垃圾分类。请问为了避免迟到 yyy 最晚什么时候出门?输出 HH:MM 的时间格式,不足两位时补零。由于路途遥远, yyy 可能不得不提前一天出发,不过不可能提前超过一天。 输入格式 两个正整数 s,v,意思已经在题目中给定

cc_love_program的博客 1万+

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

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

weixin_48594878的博客 432

矩形口径喇叭天线设计——参数设置

我们建立好矩形口径喇叭天线的模型后(模型建立可参考B站相关视频或者李明洋的《HFSS天线设计》),如何修改参数达到我们的指标呢?

m0_57263863的博客 1万+

RV1126平台JD9366触摸屏驱动移植实战:从源码到烧录的完整指南

本文详细介绍了在RV1126平台上移植JD9366触摸屏驱动的完整流程,从环境准备、源码获取到驱动配置、内核编译、设备树设置以及固件烧录与测试验证。通过实战经验分享和常见问题排查,帮助开发者高效完成触摸屏驱动移植,适用于嵌入式Linux开发场景。

weixin_30872337的博客 409

HTTP协议详解之HTTP/1.1

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

weixin_39399492的博客 2万+

逆向CarPlay协议时,除了USB主从切换,你还需要注意这3个关键点

本文深入探讨逆向CarPlay协议时的3个关键点,包括MFi协议背景、多通道协同工作机制和协议分析工具的高级过滤技巧。特别解析了USB主从切换后的复杂交互过程,帮助安全研究员和逆向工程师更好地理解CarPlay协议的核心机制与潜在安全研究切入点。

weixin_29164497的博客 382

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

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

武汉红喜 1774

MSVS C# Matlab的混合编程系列2 - 构建一个复杂(含多个M文件)的动态库:

本节我们尝试将一个有很多函数和文件的Matlab算法文件集成到C#的项目里面。

山云的专栏 2069

轨道平面系与轨道姿态系

文章摘要: 轨道平面系与轨道姿态系是航天任务中两个核心坐标系。轨道平面系(惯性系)以地心为原点,Z轴沿轨道角动量方向,用于轨道确定和机动规划;轨道姿态系(如LVLH系)以航天器质心为原点,Z轴指向地心,用于姿态控制和对地观测。两者通过旋转矩阵相互转换:轨道平面系基于轨道根数构建,保持静态;而LVLH系随轨道运动连续旋转。前者适用于全局轨道分析,后者支撑局部任务执行。理解二者的定义差异(原点、基准轴、惯性属性)及数学转换关系,对航天器姿态轨道控制系统的设计与操作至关重要。

ScilogyHunter的博客 88

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

基于Simulink的电机驱动逆变器仿真

本文完成了电机驱动逆变器的Simulink多层级仿真平台搭建,实现了:✅ 构建了从理想到器件级的逆变器模型体系✅ 实现了Si/SiC损耗精确计算与结温预测✅ 建模了母线寄生参数、死区效应、栅极驱动等关键非理想特性✅ 支持故障注入与保护策略验证✅ 集成了热管理、EMI、寿命预测与碳足迹评估。

amy_mhd的博客 87

备忘 Tomcat 配置文件

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

品味的家园 606

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

tomcat整理备忘

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

weixin_34354945的博客 102

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

Tomcat6.0 SSL的配置

Tomcat6.0 SSL 的配置 1. 参考: Tomcat 6.0 自带的文档 docs/ssl-howto.html,详细介绍了配置过程。 2. 目的: 以下详细描述配置过程,仅作为备忘录。 3. 备忘录:   Step1,安装 tomcat 6.0.18,此为当前最新版本,需 JDK5.0 或以上。 JDK 安装后,可以在命令行下使用如下命令检测是否成功。 C:\Doc...

longxzq的专栏 174
上一篇: Tomcat请求乱码(备忘)
下一篇: Apache curator-client详解
shift_alt_ctrl
博客等级 码龄10年 0粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值