您的位置:首页 > 运维架构 > Tomcat

Tomcat 配置和监控

2016-03-28 13:14 627 查看
一:jdk和tomcat基础

apache有两种方式运行php,一是使用模块,二是使用fastcgi

nginx也可以通过fastcgi处理动态请求,也可以转发至tomcat

tomcat监控主要是监控JVM,优化主要是外部和内部,内部的有最大空闲,最小空闲等

J2EE:java的企业版和嵌入式

J2SEE:java的标准版

JME2:手机版的java

jdk和jre:jdk是一个开发工具包,一般会包含jre,jre仅是一个java运行环境,sdk是一个开发工具

tomcat 下载地址:
http://tomcat.apache.org/download-80.cgi
jdk下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
二:通过saltstack 批量安装jdk和tomcat,并配置环境变量:

1、salt客户端:

yum install salt-minion -y

vim /etc/salt/minion

master: 192.168.10.205 #salt 服务器的地址


/etc/init.d/salt-minion start

2、salt 服务端:

yum install salt-minion -y

vim /etc/salt/master

file_roots: #指定工作目录
base:
- /srv/salt


cd /srv/

mkdir salt

/etc/init.d/salt-master restart

salt-key -A

cd /srv/salt/

[root@node5 salt]# mkdir jdk tomcat

[root@node5 salt]# vim jdk/install.sls

jdk-install:
file.managed:
- name: /usr/local/src/jdk-8u77-linux-x64.tar.gz
- source: salt://jdk/files/jdk-8u77-linux-x64.tar.gz
- user: root
- group: root
- mode: 755
cmd.run:
- name: cd /usr/local/src/ && tar xvf jdk-8u77-linux-x64.tar.gz && mv  jdk1.8.0_77  /usr/local/jdk && chown -R root.root /usr/local/jdk -R
- unless: test -d /usr/local/jdk
- require:
- file: jdk-install

jdk-conconfig:
file.append:
- name: /etc/profile
- text:
- export JAVA_HOME=/usr/local/jdk
- export PATH=$JAVA_HOME/bin:$PATH
- export PATH=$TOMCAT_HOME/bin:$PATH


[root@node5 salt]# mkdir jdk/files

[root@node5 salt]# cp /root/jdk-8u77-linux-x64.tar.gz jdk/files/

include:
- jdk.install

tomcat-install:
file.managed:
- name: /usr/local/src/apache-tomcat-8.0.33.tar.gz
- source: salt://tomcat/files/apache-tomcat-8.0.33.tar.gz
- user: root
- group: root
- mode: 755

cmd.run:
- name: cd  /usr/local/src  && tar xvf apache-tomcat-8.0.33.tar.gz && mv    apache-tomcat-8.0.33  /usr/local/tomcat &&  chown -R root.root /usr/local/tomcat
- unless: test -d /usr/local/tomcat
- require:
- file: tomcat-install

tomcat-config:
file.append:
- name: /etc/profile
- text:
- export TOMCAT_HOME=/usr/local/tomcat


[root@node5 salt]# mkdir tomcat/files

[root@node5 salt]# cp /root/apache-tomcat-8.0.33.tar.gz tomcat/files/

[root@node5 salt]# vim top.sls

base:
'*':
- tomcat.install


执行即结果:
[root@node5 salt]# salt "*" state.highstate



三:客户端验证:



server.xml ,对服务和引擎的配置文件:

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" reloadable="true" docBase="/opt/apache-tomcat-6.0.37/webapps/mobile/" />


tomcat-users.xml web管理,不建议打开:

[root@node6 tomcat]# vim conf/tomcat-users.xml

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


四:tomcat安全规范:

1.telnet管理端口保护

1、<Server port="8005" shutdown="SHUTDOWN">  #将端口和 命令改了,或不启用,因为telnet到本端口可以使用默认SHUTDOWN将tomcat关闭。

#例如:
[root@node6 tomcat]# ss -tnl | grep 8080
LISTEN     0      100                      :::8080                    :::*
[root@node6 tomcat]# telnet 127.0.0.1 8005
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'
SHUTDOWN #会将tomcat服务停止
Connection closed by foreign host.
[root@node6 tomcat]# ss -tnl | grep 8080


2.ajp连接端口保护

#更改ajp的端口,在8000-8999之间,如不使用ajp可以禁用


3.禁用管理端

#可以删除webapp里面的所有默认目录文件


4.降权启动

#使用非root启动tomcat


5.文件列表访问控制

#conf/web.conf文件中default部分listing的配置必须为false,false为不能列出目录文件,true为允许,默认为false


6.版本信息隐藏

7.server header重写

#在server.conf中的http部分加入 server=“xxx”,隐藏tomcat包头息信息
<Connector port="8080" protocol="HTTP/1.1" server="webserver"
connectionTimeout="20000" redirectPort="8443" />


8.启停脚本权限回收

#将启动和关闭的脚本权限改为744


9.访问日志格式规范

五:tomcat监控:

tomcat监控主要是监控jvm,JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

jps命令:是jdk包里面的,只显示java进程

  -m输出传递给main方法的参数,如果是内嵌的JVM则使出为null

  -l 输出应用程序主类的完整包名,或者是应用程序JAR文件的完整路径

  -v 输出传给JVM的参数


jstack:jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式:

如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的

jstack [ option ] pid
jstack [ option ] executable core
jstack [ option ] [server-id@]remote-hostname-or-IP

1)、options:
executable Java executable from which the core dump was produced.
(可能是产生core dump的java可执行程序)
core 将被打印信息的core dump文件
remote-hostname-or-IP 远程debug服务的主机名或ip
server-id 唯一id,假如一台主机上多个远程debug服务
2)、基本参数:
-F当’jstack [-l] pid’没有相应的时候强制打印栈信息
-l长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表.
-m打印java和native c/c++框架的所有栈信息.
-h | -help打印帮助信息
pid 需要被打印配置信息的java进程id,可以用jps查询.


JVM 故障排除:

1、jps获取java进程的PID



2、jstack $PID >> xx.txt 导出占用CPU比较高的进程线程栈



3、top -H -p $PID #查看对应进程的那个线程占用CPU过高

#这里假如其中一个线程ID 为9235的CPU使用率高



4、echo "obase=16;$PID"|bc #将线程较高的的PID转换为16进制并在输出,是因为步骤2是16进制的

#9235的16进制为2413



5、在第二步导出的xx.txt中查找转换为16进制的线程PID,找到对应的线程栈

[root@node6 tomcat]# vim 9213.txt #找到相对应的16进制2413即可



6、分析负载较高的线程栈都是什么业务操作,优化程序并处理问题。

zabbix监控tomcat:

从Zabbix 2.0开始,软件包中自带了一个用于监控JMX应用的程序,称为"Zabbix Java GateWay",非常方便使用其来监控JMX

六:tomcat优化:

外部调优:

操作系统:

JVM:

代理-Nginx:

内部调优:

禁用DNS查询:

调整线程数:

压缩

七:通过zabbix监控tomcat

Server端配置java tomcat gateway:

JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: