JVM虚拟机

常用参数

-XX:+PrintGC #开启gc日志

-XX:+PrintGCDetails #打印gc日志的详细信息

-XX:+PrintGCTimeStamps #打印gc日志的时间戳

-Xloggc:filename #gc日志的路径与名字

Ruby

在这里GC 日志格式支持 %p 和 %t 两个参数:

%p 将会被替换为对应的进程 PID

%t 将会被替代为时间字符串,格式为: YYYY-MM-DD_HH-MM-SS

Perl

开启gc日志

-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data0/logs/gc-%t.log"

Ruby

配置JAVA虚拟机的堆空间

1.设置java堆空间:两个值默认为物理内存64/1

-Xms:初始堆大小

-Xmx:最大堆大小

# 实际生产环境中, 我们通常将初始化堆(-Xms) 和 最大堆(-Xmx) 设置为一样大不超过物理内存的一半。以避免程序频繁的申请堆空间。

[root@qfedu.com bin]# vim catalina.sh 添加

JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data0/logs/gc-%t.log"

[root@qfedu.com ~]# mkdir /data0/logs/ -p #创建gc日志存放路径

2.重启tomcat

Makefile

JVM 运维实用排障工具

jdk安装

wget https://cloud.7boe.top/d/HKOSS/%E8%BD%AF%E4%BB%B6%E5%8C%85/jdk-8u321-linux-x64.tar.gz?sign=clICrDwnwWb9pMcbmSGK9-7Dke49AcKux6hLkaGKELs=:0 -O jdk.gz

Perl

压缩出来

tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/

Bash

环境变量

vim /etc/profile

Bash

写入

JAVA_HOME=/usr/local/java #指定java安装目录

PATH=$JAVA_HOME/bin:$PATH #用于指定java系统查找命令的路径

export JAVA_HOME PATH #类的路径,在编译运行java程序时,如果有调用到其他类的时候,在classpath中寻找需要的类。

Bash

jps

用来查看Java进程的具体状态, 包括进程ID,进程启动的路径及启动参数等等,与unix上的ps类似,只不过jps是用来显示java进程

常用参数如下:

-v:输出传给jvm的参数

注意: 使用jps 时的运行账户要和JVM 虚拟机启动的账户一致。若启动JVM虚拟机是运行的账户为www,那使用jps指令时,也要使用www 用户去指定。 sudo -u www jps

Makefile

Example

#查看已经运行的JVM 进程的实际启动参数

[root@java-tomcat1 ~]# jps -v

58154 Jps -Denv.class.path=.:/usr/local/java/lib:/usr/local/java/jre/lib:/usr/local/java/lib/tools.jar -Dapplication.home=/usr/local/java -Xms8m

58015 Bootstrap -Djava.util.logging.config.file=/data/application/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -Dcatalina.base=/data/application/tomcat -Dcatalina.home=/data/application/tomcat -Djava.io.tmpdir=/data/application/tomcat/temp

Perl

jstack

jstack用于打印出给定的java进程ID或远程调试服务的Java堆栈信息。此信息通常在运维的过程中被保存起来(保存故障现场),以供RD们去分析故障。

常用参数如下:

jstack

jstack [-F] //当’jstack [-l] pid’没有响应的时候强制打印栈信息

XML

Example

jstack -F 38360 > /tmp/jstack.log

JavaScript

jmap

可以查看JVM堆内存使用情况

# jmap -heap pid

[root@qfedu.com ~]# jmap -heap 1414

Attaching to process ID 1414, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 25.271-b09

using thread-local object allocation.

Parallel GC with 2 thread(s)

Heap Configuration:

MinHeapFreeRatio = 0

MaxHeapFreeRatio = 100

MaxHeapSize = 520093696 (496.0MB)

NewSize = 11010048 (10.5MB)

MaxNewSize = 173015040 (165.0MB)

OldSize = 22544384 (21.5MB)

NewRatio = 2

SurvivorRatio = 8

MetaspaceSize = 21807104 (20.796875MB)

CompressedClassSpaceSize = 1073741824 (1024.0MB)

MaxMetaspaceSize = 17592186044415 MB

G1HeapRegionSize = 0 (0.0MB)

Heap Usage:

PS Young Generation

Eden Space:

capacity = 166723584 (159.0MB)

used = 52566128 (50.13096618652344MB)

free = 114157456 (108.86903381347656MB)

31.5289095512726% used

C#

Tomcat部署

下载

wget https://cloud.7boe.top/d/HKOSS/%E8%BD%AF%E4%BB%B6%E5%8C%85/apache-tomcat-9.0.83.zip?sign=fHosBJ5zXERmfI5Kn5QbfwUv_TUZikqAHpvDs1BhqNc=:0 -O tomcat9.zip

Perl

解压出来

tar zxvf tomcat9.zip

Python

给权限

chmod +x tomcat9/bin/catalina.sh

Bash

启动

tomcat9/bin/startup.sh

Bash

Tomcat目录介绍

.

├── bin #存放tomcat的管理脚本

├── BUILDING.txt

├── conf #tomcat的配置文件

├── CONTRIBUTING.md

├── lib #web应用调用的jar包存放路径

├── LICENSE

├── logs #tomcat日志存放目录,catalin.out日志为只要输出日志

├── NOTICE

├── README.md

├── RELEASE-NOTES

├── RUNNING.txt

├── temp #存放临时文件

├── webapps #默认网站发布目录

└── work #存放编译生产的.java与.class文件

Python

网站默认目录

├── docs #tomcat的帮助文档

├── examples #web应用实例

├── host-manager #主机管理

├── manager #登录管理

└── ROOT #默认站点根目录

Bash

配置文件

.

├── Catalina

├── catalina.policy

├── catalina.properties

├── context.xml

├── logging.properties

├── server.xml # tomcat 主配置文件

├── server.xml.bak

├── server.xml.bak2

├── tomcat-users.xml # tomcat 管理用户配置文件

├── tomcat-users.xsd

└── web.xml

Bash

x

tail -f tomcat9/logs/catalina.out

Bash

Tomcat主要参数

port:指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。

protocol:连接器使用的协议,支持HTTP和AJP。AJP(Apache Jserv Protocol)专用于tomcat与apache建立通信的.

redirectPort:指定服务器正在处理http请求时,资源本身又被设置了必须要https方式访问的重定向的端口号

maxThreads:接收最大请求的并发数

connectionTimeout 指定超时的时间数(以毫秒为单位)

Makefile

host参数

host:表示一个虚拟主机

name:指定主机名

appBase:应用程序基本目录,即存放应用程序的目录.一般为appBase="webapps",相对于CATALINA_HOME而言的,也可以写绝对路径。

unpackWARs:如果为true,则tomcat会自动将WAR文件解压,否则不解压。

autoDeploy:在tomcat启动时,是否自动部署

VB.Net

Tomcat多实例配置

装两个tomcat写入多个个端口

<

---

>

YAML

Tomcat安全优化

telnet 管理端口保护(强制)

类别配置内容及说明标准配置备注telnet管理端口保护1.修改默认的8005管理端口为不易猜测的端口(大于1024);2.修改SHUTDOWN指令为其他字符串;1.以上配置项的配置内容只是建议配置,可以按照服务实际情况进行合理配置,但要求端口配置在8000~8999之间;

2、ajp 连接端口保护(推荐)

类别配置内容及说明标准配置备注Ajp 连接端口保护1.修改默认的ajp 8009端口为不易冲突的大于1024端口;2.通过iptables规则限制ajp端口访问的权限仅为线上机器;以上配置项的配置内容仅为建议配置,请按照服务实际情况进行合理配置,但要求端口配置在8000~8999之间;;保护此端口的目的在于防止线下的测试流量被mod_jk转发至线上tomcat服务器;

3、 禁用管理端(强制)

类别配置内容及说明标准配置备注禁用管理端1. 删除默认的{Tomcat安装目录}/conf/tomcat-users.xml文件,重启tomcat后将会自动生成新的文件;2. 删除{Tomcat安装目录}/webapps下默认的所有目录和文件;3.将tomcat 应用根目录配置为tomcat安装目录以外的目录;

4、降权启动(强制)

类别配置内容及说明标准配置备注降权启动1.tomcat启动用户权限必须为非root权限,尽量降低tomcat启动用户的目录访问权限;2.如需直接对外使用80端口,可通过普通账号启动后,配置iptables规则进行转发;避免一旦tomcat 服务被入侵,黑客直接获取高级用户权限危害整个server的安全;

参数详解

directory="logs" prefix="localhost_access_log." suffix=".txt"

pattern="%h %l %t %r %s %b %{Referer}i %{User-Agent}i %D" resolveHosts="false"/>

参数解释:

resolveHosts #如果这个值是true的话,tomcat会将这个服务器IP地址通过DNS转换为主机名,如果是false,就直接写服务器IP地址.

%h #这个就是服务器名称了,如果resolveHosts为false的话,这里就是IP地址了

%t #日志和时间,使用通常的Log格式

%r #包含了请求的方法和URI

%s #这个是响应http的状态码

%b #这是发送信息的字节数,不包括http头,如果字节数为0的话,显示为-

%D #处理请求的时间,以毫秒为单位

%l #浏览者进行身份验证时提供的名字

XML

隐藏版本号

prefix="localhost_access_log" suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

#在日志这里添加最后一句隐藏版本号。

重启tomcat访问查看

好文阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。