tomcat使用jvm性能监控与zabbix使用

linux系统上关于tomcat监控,很多平台只是监控端口判断服务正常,忽略对tcp链接情况(监控项中应定义zabbix-agentd关于tcp连接监控),tomcat父进程是否僵死,如果不做监控检查机制,在众多的应用服务器,使用集群负载,依然存在某个tomcat线程堆积,造成服务僵死,变现为死套接字不断增加无法释放,但是服务还在,如果用了zabbix监控使用现成的模块jmx监控

tomcat监控项

1、tomcat的应用端口(如8080),比较有局限性

2、tomcat的jmx监控,是tomcat的性能监控。堆内存大小、线程峰值 

3、tomcat可以写个静态文件 curl -I URL,获取报文头的http返回码200则为正常。



##########  方法在下面 ##########

 -------------------   JMX  监控 tomcat  --------------  

在tomcat被监控端安装jdk和tomcat环境,然后在tomcat的安装目录的bin目录下的catalina.sh文件

#需要进行用户验证

# ----- Execute The Requested Command -----------------------------------------”

之前插入新的一行(中间没有换行)


CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote

-Dcom.sun.management.jmxremote.port=9999

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=true

-Djava.rmi.server.hostname=192.168.182.5" 

==================================================================================

注意事项

1,-Djava.rmi.server.hostname=192.168.182.5中的IP地址要写成本机配置的IP,也可以配置成0.0.0.0,不然有可能会导致监听不能正常启动。

使用JConsole监控本地应用程序在开发和创建原型是非常有效的,但不推荐用户生产环境,因为JConsole本省也消耗大量的系统资源

2,每个tomcat的端口不要重复,例如,一个ip上有多个tomcat实例,每个实例一个端口

=====================================================================================

在重启tomcat服务前必须保证在hosts中有ip和主机名的映射。


在jdk的安装目录下认证用户,配置用户权限

编辑jmxremote.access和jmxremote.password   在jdk的安装目录下  

which java

cd /usr/local/jdk/jre/lib/management 

cp jmxremote.password.template jmxremote.password  

chmod 600 jmxremote.access jmxremote.password

cp  jmxremote.password.template jmxremote.password  /opt/tomcat/tomcat1/conf/

cd /opt/tomcat/tomcat1/conf/

chmod 600 jmxremote.access jmxremote.password  

vi jmxremote.password  ---jdk 与 tomcat的jmxremote.password都修改

在jmxremote.password文件中,取消注释,或者 加入自己的用户名和密码

monitorRole  QED

controlRole   R&D


在jmxremote.access 取消注释 

monitorRole   readonly

controlRole   readwrite \

create javax.management.monitor.*,javax.management.timer.* \

unregister

重启tomcat服务

可以使用netstat -an | grep 9999命令查看端口是否正常启动。可以看到端口9999的网络连接

 

开始配置终端,获取本机windows客户端ip,linux机器执行 export DISPLAY=10.35.40.26:0.0(这是我的windowsIP,待会儿要开启图形化界面,如果是linux机器是本机虚拟机,那么IP应该写LINUX的IP的网关 192.168.182.1)

打开 Xmanager - Passive 

[root@db1 bin]# ./jconsole

输入  192.168.182.5:9999    monitorRole  QED  进入

OK



##########  漫谈 tomcat 优化与 time-out #########



【tomcat】

启动一般会所在用户的环境变量


TIME_WAIT相关sysctl参数及超时时间

[root@lvs ~]# sysctl -a | grep tw

net.ipv4.tcp_max_tw_buckets  //处于TIME_WAIT状态的socket数目的最大值

net.ipv4.tcp_tw_recycle = 1 //打开TIME_WAIT快速回收机制

net.ipv4.tcp_tw_reuse //TIME_WAIT状态socket复用

Sysctl –w net.ipv4.tcp_tw_len = 2   设置TIME_WAIT在2秒后超时


默认TIME_WAIT超时时间为60秒,不可通过sysctl调节


如果tomcat本身指定的话:vi bin/setclasspath.sh

JAVA_HOME=/mall/jdk/jdk1.7.0_80

JRE_HOME=/mall/jdk/jdk1.7.0_80/jre

为httpsession安全性考虑,防止客户端脚本读取session cookie内容诸如进行CSRF/XSS恶意http***,可在tomcat6的

conf/context.xml配置文件中配置 <Context useHttpOnly="true"> 为自定义cookie及属性添加HttpOnly属性,在set-Cookie头部信息设置时可以添加"httponly"


tomcat访问url不需要加项目名,直接IP+port

<context path="" docBase="/home/tomcat/tomcat8080/webapps/jsjp" reloadable=“true”>


tomcat监控 1、tomcat的应用端口(如8080),比较有局限性

2、tomcat的jmx监控,是tomcat的性能监控,tomcat的运行情况

  3、tomcat可以写个静态文件 curl -I URL,获取报文头的http返回码200则为正常。

---------------------------------------------------------------------------------------

这个配置文件时tomcat7的server.xml 关于线程池


Tomcat最大可能达到的线程数是maxConnections这个参数和并发数


<Executor namePrefix="catalina-exec-"

maxThreads="3000" minSpareThreads="800"/>              maxThreads:Tomcat线程池最多能起的线程数;线程数是pool,用来处理连接数的

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。