zoukankan      html  css  js  c++  java
  • 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         //修改最佳优化配置

  • 相关阅读:
    Python排序算法之选择排序
    Python排序算法之冒泡排序
    http和https的区别
    【转】Robot Framework作者建议如何选择自动化测试框架
    内联的两种方式
    生产者与消费者以及ActiveMQ
    QT定时器
    生产者与消费者
    QT实现输入框与下拉框提示并可模糊匹配
    GetQueuedCompletionStatus客户端前端和server之间的通信
  • 原文地址:https://www.cnblogs.com/otherwise/p/11585158.html
Copyright © 2011-2022 走看看