zoukankan      html  css  js  c++  java
  • 浅谈tomcat中间件的优化【转】

    今天来总结一下tomcat的一些优化的方案,由于本人才疏学浅,写的不好,勿喷!

    tomcat对于大多数从事开发工作的童鞋应该不会很陌生,通常做为默认的开发环境来为大家服务,不过tomcat默认的一些配置对于生产环境来说是相当不够滴,特别对于内存以及线程的配置方面都很有可能成为日后性能的瓶颈。

    接下来咱们就聊聊tomcat的优化,从内存以及线程两个方面来谈:

    1.内存方面

    tomcat的内存优化操作起来就比较简单了

    如果是linux环境的话设置如下:

    修改TOMCAT_HOME/bin/catalina.sh,在前面加入

    JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"

    如果是windows环境的话设置如下:

    修改TOMCAT_HOME/bin/catalina.bat,在前面加入

    set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m

    2.线程方面

    在server.xml中 有以下配置:

    <Connector
     port="8080" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100" 
    maxSpareThreads="500" acceptCount="700"connectionTimeout="20000" />

    先来了解一下各属性内容:

    maxThreads="X" 表示最多同时处理X个连接

    minSpareThreads="X" 初始化X个连接

    maxSpareThreads="X" 表示如果最多可以有X个线程,一旦超过X个,则会关闭不在需要的线程

    acceptCount="X" 当同时连接的人数达到maxThreads时,还可以排队,队列大小为X.超过X就不处理

    这里是http connector的优化,如果使用apache和tomcat做集群的负载均衡,并且使用ajp协议做apache和tomcat的协议转发,那么还需要优化ajp connector。

    <Connector
     port="8009" protocol="AJP/1.3" maxThreads="600" minSpareThreads="100" 
    maxSpareThreads="500" acceptCount="700"connectionTimeout="20000" 
    redirectPort="8443" />

    由于tomcat有多个connector,所以tomcat线程的配置,又支持多个connector共享一个线程池。

    首先。打开/conf/server.xml,增加

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />

    最大线程500(一般服务器足以),最小空闲线程数20,线程最大空闲时间60秒。

    然后,修改<Connector ...>节点,增加executor属性,executor设置为线程池的名字:

    <Connector
     executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" 
    connectionTimeout="60000" keepAliveTimeout="15000" 
    maxKeepAliveRequests="1" redirectPort="443" />

    可以多个connector公用1个线程池,所以ajp connector也同样可以设置使用tomcatThreadPool线程池。

    转自

    浅谈tomcat中间件的优化

    https://www.toutiao.com/i6499659893543272974/

  • 相关阅读:
    docker基本命令
    vscode 保存提示运行"XXX"的保存参与者: 快速修复
    Vue 2.6 插槽
    代码大全-PartOne-变量命名
    Axure 8.0.1.3388 注册码 授权码 破解
    乱七八糟记一下乱七八糟的碎片化知识
    JavaScript需记的一些细节
    Python3.6问题
    python3.6- shape mismatch: objects cannot be broadcast to a single shape
    Angular+ng-zorro遇坑记
  • 原文地址:https://www.cnblogs.com/paul8339/p/8056215.html
Copyright © 2011-2022 走看看