Tomcat性能监控与调优

1. Tomcat远程debug

JDWP协议

1.1修改tomcat配置

  • 打开 Tomcat下./bin/startup.sh

将最后一行修改为exec "$PRGDIR"/"$EXECUTABLE" jdpa start "$@"
增加jpda

  • 修改 ./bin/catalina.sh
if [ "$1" = "jpda" ] ; then
  if [ -z "$JPDA_TRANSPORT" ]; then
    JPDA_TRANSPORT="dt_socket"
  fi
  if [ -z "$JPDA_ADDRESS" ]; then
    JPDA_ADDRESS="自定义端口"
  fi
  if [ -z "$JPDA_SUSPEND" ]; then
    JPDA_SUSPEND="n"
  fi
  if [ -z "$JPDA_OPTS" ]; then
    JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
  fi
  CATALINA_OPTS="$JPDA_OPTS $CATALINA_OPTS"
  shift

Tomcat支持Spring Boot项目

修改pom.xml

修改打包方式

<packaging>war</packaging>

修改入口类,继承SpringBootServletInitializer重写config方法


@SpringBootApplication
public class SolarApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(SolarApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SolarApplication.class);
    }
}

2. Tomcat-manager监控

2.1 文档docs/manager-howto.html

2.2 步骤:

  • conf/tomcat-users.xml添加用户
<role rolename="tomcat"/>
<role rolename="manager-status"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="<must-be-changed>" roles="tomcat,manager-status,manager-gui"/>
  • conf/Catalina/localhost/manager.xml配置允许的远程连接
<?xml version='1.0' encoding='utf-8'?>
<Context privileged="true" antiResourceLocking="false" doBase="${caralina.home}/webapps/manager">
    <Value className="org.apache.catalina.valves.RemoteAddrValve"
        allow="127\.0\.0\.1"/>
</Context>
  • 重启

查看Tomcat

3. psi-probe监控

3.1 初始化

  • git clone https://github.com/psi-probe/psi-probe
  • mvn clean package -Dmaven.test.skip
  • web/target/probe.war部署到tomcat下

4. tomcat调优

4.1 内存优化

4.2 线程优化

  • webapps/docs/config/http.html

maxConnections:最大连接数和处理的最大连接数(tomcat8是nio,多路复用)

acceptCount:超过最大数的请求被放在队列中,值的是该队列的最大长度(值不要太大)。

maxThreads:工作线程

minSpareThreads:最小空闲的线程(值不要太小)

4.3 配置优化

  • doc/config/host.html

autoDeploy:该标志值指示Tomcat在运行时是否应定期检查新的或更新的web应用程序。如果为true,Tomcat会定期检查appBase和xmlBase目录,并部署找到的任何新web应用程序或上下文XML描述符。更新的web应用程序或上下文XML描述符将触发重新加载web应用程序。该标志的值默认为true(配置为true会影响性能,生产环境中这个值是false)。是配置在conf/server.xml里面的。

<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
         prefix="localhost_access_log" suffix=".txt"
         pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>
  • docs/config/http.html

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

  • docs/config/context.html

reloaded:false

  • conf/server.xml

protocol="org.apache.coyote.http11.Http11Aprotocol"

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

HTTP/1.1代表的是BIO。

Session优化

  • 如果是JSP,可以禁用Session。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值