之间的协议

首先修正远程Tomcat的startup.sh末了加上jpda

Bash

tomcatjspdebugTomcat长途Debug以及参数设置装备摆设调优 JavaScript

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

然后修正catalina.sh

通过搜索jpda,我们可以看到JPDA_OPTS的阐明定义,添加了jpda启动,会天生末了两行输出

Dockerfile

# 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利用

Bash

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添加用户

HTML

<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文件,由于这个路径不存在的,须要重新创建,文件内容如下:

HTML

<?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看到这个参数

HTML

<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。

学习更多JAVA知识与技巧,关注与私信博主(学习)