2019.9.25 Tomcat执行器(线程池)和 Tomcat连接器

omcat执行器

在tomcat服务中每一个用户请求都是一个线程,所以可以使用线程池(也叫连接器)来提高性能。

线程池是什么?

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后创建线程后自动启动这些任务,线程池线程都是后台线程。每个线程都使用默认的堆栈大小。

它由线程池管理器,工作线程,任务接口,任务队列组成。

在什么情况下使用线程池?

单个任务处理的时间短

将需处理的任务的数量大

有什么好处?

1.减少在创建和销毁线程上所花的时间以及系统资源的开销

2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。

这个线程池是修改之前的,如图

1,修改主配置文件

[root@node1 ~]# vim /usr/local/tomcat7/conf/server.xml 

70 <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443"
    maxThreads="1024"                       //在70行的后面加这些,初始线程数是1024,最小线程数100,活跃的最小进程用这个引入prestartminSpareThreads="true" />

   minSpareThreads="100"
   prestartminSpareThreads="true" />

[root@node1 ~]# /usr/local/tomcat7/bin/shutdown.sh    //关闭

[root@node1 ~]# /usr/local/tomcat7/bin/startup.sh      //开启

这个是修改后的进程数

——————————————————————————————————————————————————————————————————————————————————————————————————

Tomcat连接器

Connector是Tomcat接收请求的入口,每个Connector有说自己专属的监听端口

Connector有两种:HTTP Connector和AJP Connector

enableLookups

设置为true,如果你想调用 request.getRemoteHost(),以便返回远程客户的实际主机名执行DNS查找。设置为false跳过DNS查找并以字符串形式返回IP地址(从而提高性能)。默认情况下,DNS查找被禁用。

maxPostSize

POST的最大大小(以字节为单位)将由容器FORM URL参数解析处理。可以通过将此属性设置为小于或等于0的值来禁用该限制。如果未指定,则此属性设置为2097152(2兆字节)。

比如你向tomcat提交文件的时候大于2兆是不能提交的

port

连接器 将在其上创建服务器套接字并等待传入​​连接的TCP端口号。您的操作系统将只允许一个服务器应用程序侦听特定IP地址上的特定端口号。如果使用特殊值0(零),则Tomcat将随机选择一个空闲端口用于此连接器。这通常仅适用于嵌入式和测试应用程序。

protocol

设置协议以处理传入流量。默认值是 HTTP/1.1使用自动切换机制来选择阻塞的基于Java的连接器或基于APR / native的连接器。如果PATH(Windows)或LD_LIBRARY_PATH(在大多数unix系统上)环境变量包含Tomcat本机库,则将使用APR /本机连接器。如果找不到本机库,将使用阻塞的基于Java的连接器。请注意,APR /本机连接器对HTTPS的设置与Java连接器不同。
要使用显式协议而不是依赖于上述自动切换机制,可以使用以下值:
org.apache.coyote.http11.Http11Protocol- 阻止Java连接器
org.apache.coyote.http11.Http11NioProtocol- 非阻塞Java连接器
org.apache.coyote.http11.Http11AprProtocol- APR /本机连接器。
也可以使用定制实现。
看看我们的连接器比较图表。对于http和https,两个Java连接器的配置完全相同。
有关APR连接器和APR特定SSL设置的更多信息,请访问APR文档

指定运行模式

URIEncoding

这指定在%xx解码URL之后用于解码URI字节的字符编码。如果未指定,将使用ISO-8859-1。

解决乱码的

acceptCount

当所有可能的请求处理线程都在使用时,传入连接请求的最大队列长度。队列已满时收到的任何请求都将被拒绝。默认值为100。

acceptorThreadCount

用于接受连接的线程数。在多CP​​U机器上增加此值,尽管您真的不需要超过2。此外,对于大量非保持连接的连接,您可能还希望增加此值。默认值是 1。

compression

所述连接器可在试图节省服务器的带宽使用HTTP / 1.1 GZIP压缩。参数的可接受值是“off”(禁用压缩),“on”(允许压缩,导致文本数据被压缩),“force”(在所有情况下强制压缩)或数字整数值(这是等效于“on”,但指定压缩输出之前的最小数据量)。如果内容长度未知且压缩设置为“on”或更具攻击性,则输出也将被压缩。如果未指定,则将此属性设置为“off”。

注意:在使用压缩(节省带宽)和使用sendfile功能(节省CPU周期)之间需要权衡。如果连接器支持sendfile功能,例如NIO连接器,则使用sendfile将优先于压缩。症状是静态文件大于48 Kb将被解压缩。您可以通过设置useSendfile连接器的属性来关闭sendfile,如下所述,或者更改默认 或Web应用程序中DefaultServlet配置中的sendfile使用率阈值 。 conf/web.xmlweb.xml

connectionUploadTimeout

指定在数据上载过程中使用的超时(以毫秒为单位)。这仅在disableUploadTimeout设置为时生效 false。

disableUploadTimeout

此标志允许servlet容器在数据上载期间使用不同的,通常更长的连接超时。如果未指定,则将此属性设置为true禁用此较长超时。

executor

Executor 元素中的名称的引用。如果设置了此属性,并且存在指定的执行程序,则连接器将使用执行程序,并且将忽略所有其他线程属性。请注意,如果未为连接器指定共享执行程序,则连接器将使用专用的内部执行程序来提供线程池。

maxConnections

服务器在任何给定时间接受和处理的最大连接数。达到此数量后,服务器将接受但不处理另一个连接。此附加连接将被阻止,直到正在处理的连接数低于maxConnections,此时服务器将再次开始接受和处理新连接。请注意,一旦达到限制,操作系统仍可以根据acceptCount设置接受连接。默认值因连接器类型而异。对于BIO,默认值是maxThreads的值, 除非是Executor 在这种情况下,默认值将是执行程序中maxThreads的值。对于NIO,默认为10000。对于APR / native,默认为8192。

请注意,对于Windows上的APR / native,配置的值将减小到1024的最大倍数,小于或等于maxConnections。这是出于性能原因而完成的。
如果设置为值-1,则禁用maxConnections功能并且不计算连接。

maxThreads

Connector要创建的最大请求处理线程数,因此确定可以处理的最大并发请求数。如果未指定,则此属性设置为200.如果执行程序与此连接器关联,则忽略此属性,因为连接器将使用执行程序而不是内部线程池执行任务。

minSpareThreads

最小线程数始终保持运行。如果未指定,10则使用默认值。

SSLEnabled

使用此属性可在连接器上启用SSL通信。要在连接器上启用SSL握手/加密/解密,请将此值设置为true。默认值为false。转换此值时,true您还需要设置 scheme和secure属性以将正确值request.getScheme()和 request.isSecure()值传递给servlet有关详细信息,请参阅SSL支持

最佳优化配置图如下;

[root@node1 ~]# vim /usr/local/tomcat7/conf/server.xml         //修改最佳优化配置

猜你喜欢

转载自www.cnblogs.com/otherwise/p/11585158.html