最近同事开发的一个项目部署上线后用过几天就TOMCAT自动关闭,并且该项目没有开通对外访问。通过阿里云监控台查看,从升级后系统内存占用上升趋势,CPU等信息没有太大变化。

打印服务器日志后发现全是线程日志。并且过一段时间后会发现停留大日志里的线程数逐步增加,通过命令定时查看服务器观察应用线程数,按时间在递增。综合以上分析初步定位是开启线程数多没有关闭导致程序占用系统内存多从而TOMCAT关闭。

top --查看JAVA线程IDtop -Hp pid -d 1 -n 1  --查看当前的较高的线程jstack 28174 > dump.txt --打印日志

ps huH p  pid  | wc -l  -- 发现每隔1分钟线程数一直在增加。

按日志查到程序使用线程情况,并且全文搜索程序使用线程的方法,再接合开发的同事提供的信息,定位问题。

优化后:

优化上线后再观察线程数正常。

分析:使用ScheduledExecutorService启动线程时一定要关闭。

记一次TOMCAT一段时间自动关闭的更多相关文章

  1. js实现类似页面广告一段时间自动打开一段时间自动关闭的功能

    js实现类似页面广告一段时间自动打开一段时间自动关闭的功能 一.总结 Window 对象的 open()方法:window.open('测试页面.html','news','height=300,wi ...

  2. 记hangfire后台任务运行一段时间后不运行了。

    什么是Hangfire Hangfire 是一个开源的.NET任务调度框架,目前1.6+版本已支持.NET Core.个人认为它最大特点在于内置提供集成化的控制台,方便后台查看及监控. https:/ ...

  3. 隔一段时间应用就会挂掉(进程在,但停止响应,也无log输出),必须重启tomcat

    此处是转载的  是给自己做的备注 问题:隔一段时间应用就会挂掉(进程在,但停止响应,也无log输出),必须重启tomcat 原因查找:由于tomcat自身log中并无错误产生,磁盘空间足够,读写也正常 ...

  4. 项目在tomcat里运行一段时间总是自动崩掉的问题排查与解决

    最近的检验系统上线一段时间后,发现系统访问不了,tomcat总是会自动崩掉,一般遇到这种问题,程序员的第一反应都肯定是内存溢出. 确实是,但是java里内存分好几种,堆内存.栈内存.静态内存区等等,下 ...

  5. 前段时间,接手一个项目使用的是原始的jdbc作为数据库的访问,发布到服务器上在运行了一段时间之后总是会出现无法访问的情况,登录到服务器,查看tomcat日志发现总是报如下的错误。    Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected est

    前段时间,接手一个项目使用的是原始的jdbc作为数据库的访问,发布到服务器上在运行了一段时间之后总是会出现无法访问的情况,登录到服务器,查看tomcat日志发现总是报如下的错误. Caused by: ...

  6. 【生产环境】Tomcat运行一段时间后访问变慢分析历程

    环境运行一天或者几天,网站访问就很卡,手机端app访问页面出现白屏.Tomcat运行一段时间后访问变慢,但是cpu,内存都正常.日志也是发现不了啥.... 问题的原先分析 1.环境配置(cpu,内存, ...

  7. tomcat运行一段时间后报错"Too many open files"

    tomcat运行一段时间后报打开太多文件错误:Too many open files  查看当前进程的文件打开数: lsof -n |awk '{print $2}'|sort|uniq -c |so ...

  8. 网站运行一段时间后就无法访问,重启Tomcat才能恢复

    网站运行一段时间后就无法访问,重启Tomcat才能恢复出现这种情况,很可能是以下几种情况:1.超过数据库连接池上限2.并发数达到上限3.内存溢出具体还是需要通过打印的日志进行具体分析.解决方法1.如果 ...

  9. Spring Boot定时任务运行一段时间后自动关闭的解决办法

    用Spring Boot默认支持的 Scheduler来运行定时任务,有时在服务器运行一段时间后会自动关闭.原因:Schedule默认是单线程运行定时任务的,即使是多个不同的定时任务,默认也是单线程运 ...

随机推荐

  1. js 整理 前端知识点 前端面试题 (2020)(vue)

    数据类型 字符串(String).数字(Number).布尔(Boolean).对空(Null).未定义(Undefined).Symbol. 引用数据类型:对象(Object).数组(Array). ...

  2. JS promise对象

    Promise 承诺 一:promise概念 在js中,promise是一个对象,是专门用来处理异步操作 / 回调地狱的,那么什么是回调地狱?设计到同步和异步任务的知识,在js中,因为js是单线程,无 ...

  3. JavaScript学习 Ⅵ (正则表达式)

    十三. 正则表达式 正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则,将字符串中符合规则的内容提取出来. 创建正则表达式对象 构造函数 var reg = n ...

  4. lottery+web2

    lottery 题目分析 题目给了一个彩票网站,经过页面的探索,没有发现明显漏洞,进行目录扫描,发现该站存在.git文件 猜测存在源码泄露,使用githack利用: 获得网页源码,进行源码分析 源码审 ...

  5. Celery无法注册任务的几种情况

    Celery处理异步任务使得程序不必等待任务结束就可以继续执行其它任务或返回数据结果, 在处理耗时任务如发送邮件.发送信息验证码等场景下非常适用! Celery使用方法灵活,根据具体业务有不同的部署和 ...

  6. 机器学习实战基础(九):sklearn中的数据预处理和特征工程(二) 数据预处理 Preprocessing & Impute 之 数据无量纲化

    1 数据无量纲化 在机器学习算法实践中,我们往往有着将不同规格的数据转换到同一规格,或不同分布的数据转换到某个特定分布的需求,这种需求统称为将数据“无量纲化”.譬如梯度和矩阵为核心的算法中,譬如逻辑回 ...

  7. c++运行程序 改变字和背景的颜色与窗口大小和位置 (c++)(windows)

    关于改变字体的颜色和背景颜色: 在#include <windows.h> 库里 0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A ...

  8. 关于在JSP页面识别不了EL表达式的情况

    今天在JSP页面接收Controller返回的数据user_nickname,使用EL表达式显示数据发现在页面输出的始终是字符串${user_nickname} 经过查阅资料,问题在于使用的web.x ...

  9. java不需要递归列表转树形结构

    有时候我们需要将列表结构的数据转成树形结构的数据 废话不多说直接上代码 基础类 `@Data public class TreeNode { private Long id; private Long ...

  10. Go Pentester - HTTP Servers(2)

    Routing with the gorilla/mux Package A powerful HTTP router and URL matcher for building Go web serv ...