问题描述
项目大概跑几天就突然无法登陆了,jsp页面访问没任何问题,内存也不溢出,就是涉及到数据交互的地方好像都不能访问了。似乎有session的jsp页面也出不来。现在日志也不现实任何的错误,因为人家登录不了,自然不报任何错误。那么我该从哪里下手找问题出现的点呢?提供点思路给我吧,谢谢。 问题补充:283433775 写道
解决方案
引用如果是这种情况的话,我通过什么样的方式能查看到当前连接活动数?因为我重启项目之后段时间就没有问题了,但是我无法具体的获取到某个时间的线程池活动连接数还有剩余连接数,能不能给出具体方法。 数据库访问没有写到for循环里,如果写到了,会引起什么样的问题,能详细点吗? 数据库连接释放由spring自动释放。jdbctemplate 你用的是什么数据库?数据库允许的最大连接数是多少?1,循环足够大,一下子就会把数据库连接数用完了2,Tomcat的相关源码commons-dbcp包中BasicDataSource 这个类中有Context initCtx = new InitialContext(); BasicDataSource bds = (BasicDataSource)initCtx.lookup("java:comp/env/jdbc/afunms"); initCtx.close(); bds.getConnection(); System.out.println("当前连接数=" + bds.getNumActive()); 随时getConnection()的增加,这个numActive也会增多(如果不关闭connection的话)。当numActive>maxActive(这个maxActive在xml文件中)时,程序就再不能连上DB了。这就是程序为什么会出错的原因了
解决方案二:
应该是数据库链接满了一直没有释放1,可以修改配置增加数据库链接数2,检查代码,不要把对数据库访问的写在For循环里3,是不是操作完数据库后没有释放数据库连接
解决方案三:
因为项目的日志模块不一定有全部的异常信息,查看系统服务器的后台信息,如果有异常,刚针对修改,楼主所说的不能登录是,指可以正常访问登录页,不能正常登录系统吗?如果是这样的话,可以使用debug,查看相关的登录逻辑。
解决方案四:
程序中对象处理是否有问题,如果一个很大的项目内存中有些对象没有及时释放了,导致缓存没有更新,后台和前台不能正常响应,或许会出现这种问题,在服务器上面检测其gc日志,打印出其调用类的过程,查看哪里不正常
解决方案五:
要不可能你的项目放在的服务器的配置内容被人给修改了,你可以首先检查一下服务器,接下来你就主要查看你的数据库,可能数据库端口有问题,是不是被禁用了还是被占用的什么的。然后再看后台执行情况。
解决方案六:
引用283433775 写道数据库,端口是否被暂用,是否能连接数据进行访问。端口被占用不太清楚,但是重启tomcat后一切恢复正常。不确定是项目中的哪个模块导致的这个问题。那这样的话,你的确需要在你的系统中判断最可能发生问题的模块,比如数据访问,比如登录模块。 需要多打出日志进行分析。不过貌似你的数据访问可能释放的不是很正常,时间跑长了,被暂用了,没有释放了呢。
解决方案七:
数据库,端口是否被暂用,是否能连接数据进行访问。
解决方案八:
去tomcat日志里找找有没有信息