LNMT动态⽹站

news/2025/3/14 23:03:51/文章来源:https://www.cnblogs.com/Basicskill/p/18773019

Nginx + Tomcat
Tomcat默认监听在8080端⼝
Tomcat依赖于java

0.环境准备
CentOS7.9 Nginx Proxy 10.1.106.70
CentOS7.9 Tomcat 动态服务器 10.1.106.661.安装 jdk
链接: https://pan.baidu.com/s/1rBd5lAIn0Cn-JrgJDy00IQ?pwd=94he 提取码: 94he#上传到 /soft/package/
[root@tomcat-node1-20 package]# pwd/soft/package/
[root@tomcat-node1-20 package]# ll
-rw------- 1 root root 194151339 4⽉ 28 21:20 jdk-8u231-linux-x64.tar.gz
[root@tomcat-node1-20 package]# tar xf jdk-8u231-linux-x64.tar.gz -C /app
[root@tomcat-node1-20 ~]# cd /app/ && mv jdk1.8.0_231 jdk1.8
[root@tomcat-node1-20 ~]#cat /etc/profile.d/jdk.sh
export JAVA_HOME=/app/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar[root@tomcat-node1-20 ~]# chmod +x /etc/profile.d/jdk.sh
[root@tomcat-node1-20 ~]# source /etc/profile
[root@tomcat-node1-20 ~]# java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)2.安装 tomcat
[root@tomcat-node1-20 ~]# mkdir /soft/src -p
[root@tomcat-node1-20 ~]# cd /soft/src
[root@nginx ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-
9/v9.0.74/bin/apache-tomcat-9.0.74.tar.gz --no-check-certificate[root@tomcat-node1-20 src]# tar xf apache-tomcat-9.0.74.tar.gz -C /soft
[root@tomcat-node1-20 src]# cd ..
[root@tomcat-node1-20 soft]# mv apache-tomcat-9.0.74/ tomcat-8080
[root@tomcat-node1-20 bin]# /soft/tomcat-8080/bin/startup.sh3.配置 Nginx proxy 负载均衡
[root@nginx nginx]# yum install nginx -y
[root@nginx nginx]# systemctl enable nginx
[root@nginx nginx]# systemctl start
[root@nginx nginx]]# cd /etc/nginx/conf.d/
[root@nginx nginx]]# pwd
/etc/nginx/conf.d[root@nginx nginx]# cat tomcat.conf
upstream java_prod {server 10.1.106.66:8080;
}
server {listen 80;server_name tomcat.wingsredevsecops.top ;location / {proxy_pass http://java_prod;include proxy_params;}
}

JVM故障排查思路

1. jps获取java进程的PID
2. top -H -p PID 查看对应进程的哪个线程占⽤CPU过⾼。
3. jstack pid >> java.txt 导出CPU占⽤⾼进程的线程栈。
4. echo "obase=16;989"|bc 将线程的PID转换为16进制。
5. 在第⼆步导出的java.txt中查找转换成为16进制的线程PID。找到对应的线程栈。
6. .分析负载⾼的线程栈都是什么业务操作。优化程序并处理问题。# tomcat 性能优化参数
#最⼤线程数
maxThreads="600"
#初始化时创建的线程数
minSpareThreads="100"
#⼀旦创建的线程超过这个值,Tomcat就会关闭,不再需要的socket线程。
maxSpareHtreads="500"
#指定当所有可以使⽤的处理请求的线程数量都被使⽤时,可以放到处理队列中的请求数,超过这个数的请求将不予处
理。
acceptCount="700" />[root@i-m60lx3hh soft]#  mkdir -p tomcat
[root@i-m60lx3hh soft]#  cd tomcat
[root@i-m60lx3hh tomcat]# pwd
/soft/tomcat
[root@i-m60lx3hh tomcat]# jps
2453 Bootstrap
2523 Jps[root@i-m60lx3hh tomcat]#  top -Hp 2453
top - 22:55:59 up 30 min,  1 user,  load average: 0.00, 0.01, 0.05
Threads:  29 total,   0 running,  29 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.0 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  4045032 total,  2680864 free,   511456 used,   852712 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  3299364 avail Mem PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                        2453 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2454 root      20   0 3544396 108408  13696 S  0.0  2.7   0:01.55 java                                                                                                                           2455 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.01 java                                                                                                                           2456 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.01 java                                                                                                                           2457 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.01 java                                                                                                                           2458 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2459 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2460 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2461 root      20   0 3544396 108408  13696 S  0.0  2.7   0:01.24 java                                                                                                                           2462 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.68 java                                                                                                                           2463 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2464 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.13 java                                                                                                                           2465 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.03 java                                                                                                                           2466 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2467 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2468 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.05 java                                                                                                                           2469 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2470 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2471 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2472 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2473 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2474 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2475 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2476 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2477 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2478 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2479 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.01 java                                                                                                                           2480 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.00 java                                                                                                                           2481 root      20   0 3544396 108408  13696 S  0.0  2.7   0:00.05 java[root@i-m60lx3hh tomcat]#  jstack 2453 >> java.txt
[root@tomcat tomcat]# echo "obase=16;2453"|bc
16EB8
[root@tomcat tomcat]# egrep -ri "16EB8"
java.txt:"Catalina-utility-2" #15 prio=1 os_prio=0 tid=0x00007f9a30002000 nid=0x16eb8
waiting on condition [0x00007f9a7db65000]
"Catalina-utility-2" #15 prio=1 os_prio=0 tid=0x00007f9a30002000 nid=0x16eb8 waiting on
condition [0x00007f9a7db65000]java.lang.Thread.State: TIMED_WAITING (parking)at sun.misc.Unsafe.park(Native Method)- parking to wait for <0x00000000db8b4110> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Abstra
ctQueuedSynchronizer.java:2078)at
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadP
oolExecutor.java:1093)at
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadP
oolExecutor.java:809)at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)
这是 Tomcat Web 服务器进程中的⼀个线程,线程名为 Catalina-utility-2。根据堆栈信息,该线程处于
TIMED_WAITING 状态,即等待某个条件,在指定时间过后将会⾃动唤醒。
堆栈信息显示该线程被阻塞在
`java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take` ⽅法上,该⽅法是
⼀个被调度的线程池队列(DelayedWorkQueue)。该线程进⼊了 Wait(等待)状态并在等待某个任务添加到队列
中。
该线程池中可能存在某个任务⽆法完成或其它线程池问题。可以使⽤ jstack 和 JMX 等⽅式,查看线程池的上下⽂
以及任务队列中是否存在某些任务在等待执⾏。如果任务等待时间过⻓,可以调整线程池的参数;如果任务本身有问
题,则需要对其实现进⾏修复。

jstack

jstack 是 JDK ⾃带的⼀个命令⾏⼯具,可以⽤来打印出⼀个 Java 进程的线程堆栈信息。它可以⾮常⽅便地帮助开
发者和运维⼈员分析 Java 进程在运⾏时出现的问题,⽐如死锁、性能瓶颈等。jstack 可以⽤来查看 Java 进程中所有线程的状态,包括线程ID、线程名称、线程状态、堆栈信息等。根据堆栈信
息,可以分析出每个线程正在执⾏的代码,以及线程间的互相依赖关系,从⽽帮助定位问题并进⾏排查和解决。使⽤ jstack 命令时需要提供⽬标 Java 进程的 ID 或者⽂件描述符。如果不指定任何参数,则默认会将堆栈信息打印
到标准输出中,也可以将结果存储到⽂件中进⾏分析。jstack 命令的语法如下:
jstack [-l] [-m] [-h] [-F] [-v] <pid or core>其中主要参数的含义如下:
-l : 输出关于锁的附加信息
-m : 如果调⽤本地⽅法,则显示C/C++堆栈信息
-h : 帮助信息
-F : 当正常输出阻塞时,强制输出线程的堆栈信息
-v : 输出所有JVM相关信息
可以通过官⽅⽂档或者命令⾏输⼊ jstack -h 获取更详细的使⽤说明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/898927.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware中安装CentOS7

转自:https://www.cnblogs.com/javaxubo/p/18455425 centos7下载地址:https://mirrors.aliyun.com/centos/7/isos/x86_64/ 1、打开“VMware Workstation“软件,选择”创建新的虚拟机2、选择“典型”选项,然后下一步。3、选择“稍后安装操作系统”,点击下一步。4、客户机操…

3.14日报

所花时间:8h 代码量(行):220 博客量:6 了解到的知识点: 计算机网络:早上详细讲解了链路层部分,三个基本问题:封装成帧,透明传输,差错检测。 其中着重讲解了有关计算的二进制序列,随堂练习更是一半的计算 然后就是下午的软件测试 要做一个地铁售票

使用fastapi部署网页模板

背景 如果你想快速实现一个网站的前后端的部署,那么现成的站点模板是必须的,如果我们使用nginx做反向代理可以实现部署静态网站,如果我想相对请求或者页面有一些更新,那么就需要用到后端框架,这里我们使用fastapi去代理静态资源同时将模板的请求根据我们的需求进行动态的返…

第四周第五天

所用时间:270分钟 代码量(行):174 博客量(篇):1 了解到的知识点: 1.课堂测试 编写了简单的地铁购票系统app,实现了按站计算购票费用,将项目打包为apk后再手机端运行成功 学习了如何将项目打包为apk文件,如下图所示2.计算机网络

Apache Tomcat RCE漏洞复现(CVE-2025-24813)

今日官方披露 Apache Tomcat partial PUT文件上传反序列化漏洞。在 CVE-2025-24813 中tomcat开启文件会话持久化,攻击者可利用PUT上传文件,并构造恶意请求触发session文件反序列化。漏洞描述 该漏洞的核心在于不完整PUT请求上传时 Tomcat 会使用了一个基于用户提供的文件名和…

SparkSubmit提交任务到yarn及报错解决方案

SparkSubmit提交任务到yarn及报错解决方案@目录一、提交任务代码二、Linux提交可能出现的问题及解决方案情况1:JSON解析异常情况2:java.lang.InstantiationException spark.sql.driver情况3 中kafka:java.lang.NoClassDefFoundError: org/apache/kafka/clients/producer/Cal…

线程异步处理任务

实际开发中,service层可能会执行多个步骤,那有些步骤可能和主任务没有太大关联,那我们可以采用线程去处理,这样就提高响应速度,当然也可以采用MQ,此处介绍的是用线程处理 1、controller层@GetMapping("/thread")public void thread(){demo1Service.process();}…

08. 通用定时器

一、什么是通用定时器ESP32 S3 芯片配备了两个通用定时器组,每组均包含两个通用定时器和一个主系统看门狗定时器。每个通用定时器都具备多个通道。通过明确指定定时器号和通道号,用户可以精准地选定所需的定时器和通道。每个定时器均支持独立编程,并且具备微秒级的精确时间中…

全链路赋能游戏鸿蒙化适配,鸿蒙游戏开发者服务焕新升级

3月14日,华为游戏中心在成都开展了鸿蒙游戏开发者服务日线下活动。本次活动吸引了百余位游戏厂商代表以及开发者参与。华为一线技术专家团队与众多游戏开发者进行了面对面的深入交流,聚焦游戏鸿蒙化全流程技术实践,通过专家授课、案例解析与现场互动,为开发者提供从技术适配…

多线程程序设计(三)——Guarded Suspension

本文摘要了《Java多线程设计模式》一书中提及的 Guarded Suspension 模式的适用场景,并针对书中例子(若干名称有微调)给出一份 C++ 参考实现及其 UML 逻辑图,也列出与之相关的模式。 ◆ 适用场景 当线程访问的共享数据没有准备好时,让该线程进入等待状态,直到数据被准备好…

西部数据企业级硬盘HC310开盘数据恢复,300G左右数据量耗时半年

这块西数4T企业级硬盘HC310是杭州某研究所送过来的,突发损坏不识别,通电后咯吱咯吱敲盘异响,磁头坏了。这款企业级硬盘目前开盘成功率一般,因为磁头适配很困难,需要反复更换磁头,备件成本很高。这种硬盘的开盘难度跟服务器SCSI或SAS硬盘有的一拼,没有经验甚至拆一个废一…

5分钟,构建国产数据库智能体

近期,圈里很多朋友,都尝试利用 DeepSeek 构建自己的智能体。我也利用腾讯元器,将个人公众号内容做了个智能体,可以实现简单的问答。那么延展来看,智能体除了可利用公众号内容,也可使用离线文件等方式来构建。这不禁让我考虑,是否可用这样方式构造一个数据库智能体。说干…