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连接器不同。 指定运行模式 |
URIEncoding |
这指定在%xx解码URL之后用于解码URI字节的字符编码。如果未指定,将使用ISO-8859-1。 解决乱码的 |
acceptCount |
当所有可能的请求处理线程都在使用时,传入连接请求的最大队列长度。队列已满时收到的任何请求都将被拒绝。默认值为100。 |
acceptorThreadCount |
用于接受连接的线程数。在多CPU机器上增加此值,尽管您真的不需要超过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。这是出于性能原因而完成的。 |
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 //修改最佳优化配置