tomcat里项目无法访问,但项目里的定时任务还能正常跑

陌生缘林 2017-10-23 08:21:53
tomcat8.0里部署了一个项目。某天突然出现客户端的请求无法达到项目里,查看项目日志,没看到客户端打过来的请求的日志记录。但是每半小时跑一次的定时任务还能正常跑,速度也不慢。过个10十分钟或更长时间再看日志,之前客户端发过来的请求在项目日志里有了,跑的速度也不慢。查了很久的问题,还没查到,请大帮忙看一下可能是什么问题?!现在项目一直无法访问接口。但是定时任务都能正常在跑。
...全文
1721 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
深山猿 2019-09-20
  • 打赏
  • 举报
回复
应该是tomcat程序假死问题,建议修改tomcat配置使用aio   <Connector port="8080" protocol="HTTP/1.1"                connectionTimeout="20000"                redirectPort="8443" /> 修改后如下: <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"  acceptorThreadCount="2"  connectionTimeout="20000"  enableLookups="false"   maxThreads="200"    acceptCount="1000"    maxConnections="10000"    minSpareThreads="100"  tcpNoDelay="true"   />
janzma 2019-09-03
  • 打赏
  • 举报
回复
同样有这个问题,定时任务可以跑,项目访问不了, 不知道是tomcat的问题还是代码有问题, 代码有问题的话应该会全部死掉, 毕竟是ssm
千夜怪盗 2018-01-11
  • 打赏
  • 举报
回复
你好,请问这个问题解决了吗
陌生缘林 2017-10-31
  • 打赏
  • 举报
回复
引用 11 楼 u013835778 的回复:
阿里的连接池我用过 据说会比c3p0好 但实际上最坑的地方就是连接没关闭的情况下强制关闭会报错,还容易导致项目崩溃。 应该是你事务没生效 或者配置的地方没对, 肯定问题就是你的数据库执行完没关闭,导致强制关闭 建议你检查下事务生不生效,在项目测试执行完有没有关闭连接,在换成c3p0的连接池
恩,好的。多谢了!
lifewell1 2017-10-30
  • 打赏
  • 举报
回复
阿里的连接池我用过 据说会比c3p0好 但实际上最坑的地方就是连接没关闭的情况下强制关闭会报错,还容易导致项目崩溃。 应该是你事务没生效 或者配置的地方没对, 肯定问题就是你的数据库执行完没关闭,导致强制关闭 建议你检查下事务生不生效,在项目测试执行完有没有关闭连接,在换成c3p0的连接池
陌生缘林 2017-10-28
  • 打赏
  • 举报
回复
引用 9 楼 u013835778 的回复:
连接池不是c3p0吧 有没有配置事务
不好意思,现在才回复。数据库连接池我是用阿里巴巴的 com.alibaba.druid.pool.DruidDataSource。 事务方面的话,配了下事务管理组件:org.springframework.jdbc.datasource.DataSourceTransactionManager。然后在service层上用了Transactional。其他地方没用过。
lifewell1 2017-10-26
  • 打赏
  • 举报
回复
连接池不是c3p0吧 有没有配置事务
陌生缘林 2017-10-26
  • 打赏
  • 举报
回复
引用 7 楼 u013835778 的回复:
大概明白了 你可能是每次请求数据库的链接没关闭 导致数据库连接数过多 访问数据大的话可以加缓存
数据库连接使用spring来管理的,连接池最小为10,最大50。空闲时,会保持10。应该不会很大。现在初步怀疑是内存溢出时,有些方法运行变慢了,运行超过限定的2分钟,我这边程序直接把该请求线程杀掉了,可能是直接杀线程这种做法太暴力,造成未知的后果了。没内存溢出时,是测试过这种杀线程的方法的,运行超过2分钟,直接杀掉,不影响其他人的请求的。但内存溢出时杀,就会造成我描述的现象。
lifewell1 2017-10-25
  • 打赏
  • 举报
回复
重启也不行吗,那就重新打包发布一下试试
lifewell1 2017-10-25
  • 打赏
  • 举报
回复
大概明白了 你可能是每次请求数据库的链接没关闭 导致数据库连接数过多 访问数据大的话可以加缓存
陌生缘林 2017-10-25
  • 打赏
  • 举报
回复
引用 5 楼 u013835778 的回复:
重启也不行吗,那就重新打包发布一下试试
重启可以暂时解决该问题,可是运行一段时间后还是会出现该问题。初步怀疑是用户提取数据量过大,导致内存溢出;加上若请求的方法过长,程序这边会直接杀掉该请求时间过长的线程。内存回收后,cup、内存恢复,定时任务能跑,但是外部打过来的请求就进不来了,或者过很久才会进来。
陌生缘林 2017-10-24
  • 打赏
  • 举报
回复
引用 1 楼 u013835778 的回复:
tomcat启动成功了,只是你项目出问题 定时任务不需要访问路径的
哦哦,多谢,可以具体一点吗?新手,第一个项目。
lifewell1 2017-10-24
  • 打赏
  • 举报
回复
tomcat启动成功了,只是你项目出问题 定时任务不需要访问路径的
陌生缘林 2017-10-24
  • 打赏
  • 举报
回复
引用 3 楼 u013835778 的回复:
看看你的项目启动报不报错,报错的话看看什么问题
这个问题是项目正常运行有一段时间(好几天了)后突然出现的,所以启动时肯定没有错误的。查看日志,中间出现过一次内存溢出情况,那段时间定时任务都无法正常跑。后来内存回收后正常了,线程、内存都空闲,定时任务能正常跑,但是客户端再请求服务就没响应了,请求都打不到项目里。
lifewell1 2017-10-24
  • 打赏
  • 举报
回复
看看你的项目启动报不报错,报错的话看看什么问题

5,655

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧