本文会讲解Tomcat远程Debug调试,Tomcat-manager监控(简单带过),psi-probe监控和Tomcat参数调优。本文基于Tomcat8.5版本。

Tomcat远程Debug:

  远程Debug有些时候在通过日志无法找到原因的时候还是很有用的,所以了解使用很有必要。使用JDWP实现远程Debug,定义了调试器和被调试jvm

之间的协议

  具体可以参考:https://www.ibm.com/developerworks/cn/java/j-lo-jpda3/

首先修改远程Tomcat的startup.sh最后加上jpda

exec "$PRGDIR"/"$EXECUTABLE" jpda  start "$@"

然后修改catalina.sh

通过搜索jpda,我们可以看到JPDA_OPTS的解释定义,添加了jpda启动,会生成最后两行输出

#   JPDA_OPTS       (Optional) Java runtime options used when the "jpda start"
# command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,
# and JPDA_SUSPEND are ignored. Thus, all required jpda
# options MUST be specified. The default is:
#
# -agentlib:jdwp=transport=$JPDA_TRANSPORT,
# address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND

JPDA_TRANSPORT:jpda 端口

JPDA_ADDRESS:jpda IP地址

然后修改红字部分,为定义的jpda的IP地址,默认localhost:8000,现在改成54321(随意改,只要不会重复),供远程debug使用

if [ "$1" = "jpda" ] ; then
if [ -z "$JPDA_TRANSPORT" ]; then
JPDA_TRANSPORT="dt_socket"
fi
if [ -z "$JPDA_ADDRESS" ]; then
JPDA_ADDRESS="54321"
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的webapp目录,然后重启Tomcat

在eclipse或者Intellij idea中配置remote调试,这里演示的是idea中的使用

然后添加IP地址和jpda port

然后debug启动remote,控制台会显示连接到目标VM

然后通过浏览器或者postman等工具进行请求,在ide中就可以收到请求,然后进行debug

tomcat-manager监控:

低版本Tomcat默认开启,高版本Tomcat因为一些安全原因默认关闭了。文档地址:本机Tomcat安装地址\webapps\docs\

步骤一:conf/tomcat-users.xml添加用户

<role rolename="tomcat"/>
<role rolename="manager-status"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="123456" roles="tomcat,manager-status,manager-gui"/>

步骤二:conf/Catalina/localhost/manger.xml配置允许的远程连接

新建这个manager.xml文件,因为这个路径不存在的,需要重新创建,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<Context docBase="${catalina.home}/webapps/manager"
privileged="true" antiResourceLocking="false" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1" />
</Context>

步骤三:重启

打开:127.0.0.21:8080/manager/html,界面如下:

点击最右边的Server Status,进入我们比较关心的内容

  实现jvm各个内存区域内存使用情况,我们使用的是8080端口,最大线程数200,当前线程数10,busy线程数,keep alive socket为1,最大处理时间,

处理时间,请求数,错误请求数,接收数据,发送数据

psi-probe监控:

  相比tomcat-manager监控功能更加强大,地址:https://github.com/psi-probe/psi-probe,下载之后,解压,执行

mvn clean package -Dmaven.test.skip,在web/target存在probe.war,复制到Tomcat的webapp目录,然后启动Tomcat,顺便吐槽一下,这个打包时间

巨长。。。

PS:psi-probe同样需要tomcat-manager涉及的两个配置,完全相同的

通过http:127.0.0.1:8080/probe/访问地址

可以选择多种语言,包括中文

可以查看数据源,直接选取war包发布到Tomcat、probe日志、线程

可以查看不同信息:

 系统信息:

内存使用情况:

 连接器:

Tomcat参数优化:

  主要包括内存优化、线程优化、配置优化,其中内存优化会在后面jvm优化的时候统一讲一下,这里主要针对线程参数和其他参数配置

线程相关配置:

maxConnections:

  最大连接数,Tomcat8以后,连接使用NIO,默认接收10000个连接,不再像之前一样,一个请求使用一个线程。如果APR,默认8192,但是

Windows下APR默认为1024的倍数,因为一些性能问题这样设计的。

acceptCount:

  当请求超过maxConnections之后,后续的请求会存到队列中,能够存储的请求数量就是acceptCount,默认100。后续请求的请求就会被拒绝了。

maxThreads:

  最大工作线程数量,同一时间处理的并发请求数,默认200,我们可以通过前面讲述的监控工具查看工作线程数量、内存、CPU,来决定工作线程数量

minSpareThreads:最小空闲的工作线程,不要设置太小,否则如果请求突然增加,就会出现一个停顿

其他相关配置:

autoDeploy:

  Tomcat在运行的时候是否定期检查有新的应用或者应用更新,生产环境下一定要设置为true,我们可以在server.xml看到这个参数

<Host name="localhost"  appBase="webapps"
unpackWARs="true" autoDeploy="true">

enableLookups:

  如果要调用request.getRemoteHost()以执行DNS查找以返回远程客户端的实际主机名,则设置为true。 设置为false以跳过DNS查找并以字符串形式

返回IP地址(从而提高性能)。 默认情况下,DNS查找被禁用,Tomcat8.55已经对这个参数做了优化。生产环境下设置为false,DNS查询和网络相关,会

影响性能。

reloadable:

  如果希望Catalina监视/ WEB-INF / classes /和/ WEB-INF / lib中的类以进行更改,则设置为true;如果检测到更改,则自动重新加载Web应用程序。 这

个参数在自己本地开发环境可以使用,生产环境需要设置为false。

Tomcat--远程Debug以及参数配置调优的更多相关文章

  1. Tomcat必会的企业级配置调优

    Tomcat服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选. ======== 完美的分割线 ...

  2. JVM调优(四)——tomcat远程debug

    JVM调优(四)--tomcat远程debug tomcat远程debug jdwp协议 使用步骤 登录远程服务器,进入tomcat目录,并打开文件: //tomcat/bin/startup.sh ...

  3. tomcat配置调优与安全总结

    http://vekergu.blog.51cto.com/9966832/1672931 tomcat配置调优与安全总结 作为运维,避免不了与tomcat打交道,然而作者发现网络上关于tomcat配 ...

  4. (转)Tomcat配置调优与安全总结

    tomcat配置调优与安全总结 作为运维,避免不了与tomcat打交道,然而作者发现网络上关于tomcat配置和调优安全的文章非常散,通过参考各位大神的相关技术文档,根据作者对tomcat的运维经验, ...

  5. spark submit参数及调优

    park submit参数介绍 你可以通过spark-submit --help或者spark-shell --help来查看这些参数.   使用格式:  ./bin/spark-submit \   ...

  6. spark submit参数及调优(转载)

    spark submit参数介绍 你可以通过spark-submit --help或者spark-shell --help来查看这些参数. 使用格式:  ./bin/spark-submit \ -- ...

  7. mysql的从头到脚优化之服务器参数的调优

    一. 说到mysql的调优,有许多的点可以让我们去做,因此梳理下,一些调优的策略,今天只是总结下服务器参数的调优  其实说到,参数的调优,我的理解就是无非两点: 如果是Innodb的数据库,innod ...

  8. Linux下jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案

    Linux下的jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案问题linux的jetty下发布程序后再启动jetty服务时 ...

  9. Elasticsearch 基础理论 & 配置调优

    一.简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为 ...

随机推荐

  1. SQL Server - Store procedure 如何返回值

    存储过程 返回值 procedure return values : http://www.cnblogs.com/SunnyZhu/p/5542347.html return.select.outp ...

  2. 校园商铺-1开发准备-3 Eclipse与maven的联合配置

    1. JDK安装地址: 2.maven安装地址: 3.maven配置 注意:settings.xml文件极容易出现格式错误 4.tomcat修改端口 我本地启动了其他服务,占用了8080端口,因此需要 ...

  3. 0917CSP-S模拟测试赛后总结

    机房搬家后的首战,便是失利. 依旧是挂掉了.这次状态有大问题. 然而状态的问题归根结底还是实力不行. 大约一个小时左右我拿到了T1的部分分.赛时判断了一下大概是高分. (不过赛后发现确实不算什么太高的 ...

  4. BCB编写DLL终极手册

    一. 编写 DLL File/New/Dll 生成 Dll 的向导,然后能够添加导出函数和导出类 导出函数:extern "C" __declspec(dllexport) Exp ...

  5. 命令学习_nslookup

    nslookup 域名 这是最常用最简单的用法,可以直接获得目标域名的IP地址和CNAME. 如下是A记录的返回情况 nslookup命令会采用先反向解释获得使用的DNS服务器的名称,上图中ns.gu ...

  6. niginx相关命令及代理配置

    安装 in mac https://www.cnblogs.com/meng1314-shuai/p/8335140.html Nginx相关命令 mac下启动: 通过brew 安装install 后 ...

  7. 压测:mysqlslap

    MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问mysql来执行测试,使用起来非常简单,通过mysqlslap –help可以获得可用的选项.这里列一些主 ...

  8. USACO 2009 Open Treasure Cave /// DFS||并查集 oj26215

    题目大意: 输入 p,n,t :p为地点数 判断 t 能否回到源点1 接下来n行 每行输入 a b c: a能到达b和c Sample Input 13 6 76 7 82 3 410 11 128 ...

  9. POJ - 2406 ~SPOJ - REPEATS~POJ - 3693 后缀数组求解重复字串问题

    POJ - 2406 题意: 给出一个字符串,要把它写成(x)n的形式,问n的最大值. 这题是求整个串的重复次数,不是重复最多次数的字串 这题很容易想到用KMP求最小循环节就没了,但是后缀数组也能写 ...

  10. C# 中的三个高级参数 params

    params params 关键字可以指定采用数目可变的参数的方法参数. 可以发送参数声明中所指定类型的逗号分隔的参数列表或指定类型的参数数组. 还可以不发送参数. 在方法声明中的 params 关键 ...