base:
‘linux-node2.oldboyedu.com‘:
- tomcat.install
执行安装
salt "linux-node2.oldboyedu.com" state.highstate
查看是不是在执行,以及执行情况
salt "linux-node2.oldboyedu.com" saltutil.running
执行完成后查看java版本,要重新开启一个窗口,要不环境变量不生效
java -version
java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)
启动tomcat
/usr/local/tomcat/bin/startup.sh
目前为之,tomcat已经安装OK。。
如何自定义我的目录,放在/usr/local/tomcat/webapps/ROOT下面就OK
学习几个java命令
Jps
用来查看基于HotsPot JVM里面所有进程的具体状态,包括进程ID,进程启动的路径等待。与PS命令相似,用来显示本地有权限的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。使用jps时,不需要传递进程号作为参数。
直接使用jps -lvm
Jstack
如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生的问题。具体的参数可以自己百度。
Jmap
打印出某个java进程(使用pid)内存内的,所有对象的使用情况,(如:产生那些对象,及其数量),可以输出所有内存中对象的工具,甚至可以将VM中的heap,以二进制输出成文本。使用方法:jmap -histo pid 如果连用shell jmap-histo pid >a.log 可以将其保存到文本,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象,jmap -dump:format=b,file=outfile 3024 可将3024进程的内存heap输出出来到outfile文件里,再配合MAT(内存分析工具)或者Jhat一起使用,能够以图像的形式直观的展现出来
64位机器上使用需要使用如下的命令
jmap -J-d64 -heap pid
故障排除:
1:jps 获取java进程的PID
2:jstack pid >> java.txt 导出CPU占用高进程的线程栈
3:top -H -p PID 查看对应进程的哪个线程占用的CPU过高
4:echo "obase=16;PID" | bc 将线程的PID转换为16进制
5:在第二步导出java.txt中查找转换成为16进制的线程PID。找到对应的线程栈
6:分析负载搞的线程栈都是什么业务,优化程序并处理问题
添加远程连接
cd /usr/local/tomcat/bin/
vim catalina.sh
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=192.168.56.1"
使用zabbix监控tomcat
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-java-gateway-3.0.1-1.el7.x86_64.rpm