一个tomcat的web项目放在服务器上后tomcat运行一段时间后,某些功能会出现异常,但是之前都还很正常

一个tomcat的web项目放在服务器上后tomcat运行一段时间后,某些功能会出现奇怪的异常比如什么空指针就出来了,但是之前都还很正常,这是什么原因呢?若是功能本身有问题那么一直都会有问题啊

第1个回答  2013-06-25
常见的问题有:线程同步,内存溢出等,这些问题都不是一两次测试就能发现,需要长期或针对性的进行压力测试。把当前的日志里面的 exception 堆栈打印出来并带上源码中相应的片断(异常所指的行号附近的代码)才可能猜测出原因。本回答被网友采纳
第2个回答  2013-06-01
看具体的错误提示,来解决问题。
这样,就是空谈。
第3个回答  2013-06-01
问题还出现吗?你这边错误代码还有?可以线上聊,513842343追问

只要我重启tomcat就又正常,但是每次都这样,一天后再去执行同一个功能这功能可能又会出错,偶尔又正常,太离奇了

第4个回答  2013-06-03
哥们,你能把异常贴出来吗?这么怎么回答啊?追答

hibernate template? spring用的是2.5或者更低的版本么?


如果看你给的链接oschina里面的帖子的讨论,貌似你这个是很大数据量的业务?那你还是考虑自己写事务和JDBC吧。用spring的hibernate尤其是早期版本很容易出问题的。


而且有些时候你过分依赖java的内存回收的话,可能造成资源不足。。。


空指针异常还有可能是以下两方面:

    如果你是linux/unix系统,那么看一下运行tomcat的用户的可打开的最大文件数,这个有时候可能影响,对于服务器来说,一二百的设置是完全不够的,4000起步,改过么。

    看一下你的tomcat启动脚本,应该是catalina.sh 或者是 startup.sh 里面最后的java参数,我记得java --server 默认的jvm堆大小大概只有32mb吧?这个你搜索以下相关设置,看你服务器内存大小弄大点。太小了的话如果到后面数据太多会导致堆满而无法分配内存最后返回null。你可以试着在你程序最外层catch(Throwable t) 而不是 Exception e试一下,内存满是Error类型的,Exception是捕获不到的。

追问

spring是3.0.5,项目后期是肯定会部署到linux上去的,只是现在用win2003,你说jvm参数调优很早以前都搞定了,项目以前没什么大问题,一两月出现一次,每次重启tomcat就能搞定,就是最近版本升级一次后,出现了这样的情况,爆发的很频繁,只要服务器一出现不稳定,项目里面查询用的是jdbc没有什么影响,但是用的hibernate template保存更新就会出现各种怪问题

追答

spring 3.x 几乎都抛弃 jdbc/hibernate template的概念了。Spring 3.x 推荐的应该是直接使用hibernate orm或者 jpa 的API吧。

我曾经有试过升级老的Spring 2.5.x的项目到Spring 3.x 。尝试过了 3.x 的 core jar 加上 2.5.x 的 dao/hibernate template jar。。。反正最后一堆毛病没弄通就放弃了。

最近一个项目就彻底改用Spring 3.2了,现在 v3 中推荐的是 hibernate3 或者 hibernate4 或者 JPA 这三种,但应该是在 spring-orm 的相关jar里面支持的。你如果还在用什么 jdbcTemplate的话就证明Spring各个组件你用的版本不一致。

某些情况下这样的配置可能可以工作,但一定会出很多问题。

推荐你要么回退Spring core到 2.5.x,要么数据库方面也升级到 spring 3

追问

是啊,问题很离奇,我排查到现在,通过日志发现一个细节,当服务器不稳定的时候,我插入数据就是做一个简单的保存操作都无法保存,但是没有异常,开始怀疑spring的事物管理,没有提交事物,但是我再操作几次相同的功能,几次中还是有成功的保存数据.....

追答

还有一个就是可能服务器数据库的链接不稳定。这可能包括 (1)网络传输问题;(2)数据量太大,CPU或者IO负载过重,无法及时响应导致超时;(3)看一下你的spring配置,有没有用连接池,用的连接池是不是教学用的简易连接池(正式生产环境下,一般开源的用C3P0的连接池实现)。。。最后:如果用hibernate的话,默认会一次性把表(具体是不是100%预读我记不清了)读入WEB容器内存的。如果不进行lazy-fetch之类的细节配置,很可能会导致数据库数据越多,WEB容器本身的内存消耗也跟着变多,最终就是你那种问题越来越多的情况

追问

分析的有道理,我确实用的是c3p0,服务器目前只有一台所以不存在跨主机执行的情况,关于hibernate这里的问题,我正在分析事物和它的一些深层次的东西,这两天我再次优化了很多,虽然没解决问题,倒是把整体性能上给优化了一些,现在出现的就友好点了出现问题的时候接连出现,好的时候好像又跟没事似的间歇着出现。。。。

追答

那不还是session相关的问题嘛!!!不过你这么一说,我大概知道你们公司做什么的了哈哈!!

本回答被提问者采纳

有一个web项目部署在tomcat上了,运行后页面上什么也没有就是空白是什 ...
应该是Tomcat的server.xml配置有问题,导致Tomcat启动的时候 没加载到里面的web项目。

tomcat启动了一段时间后,打开页面显示空白,浏览器不断地转,也不会提 ...
这种时候就是他的内存占用超出限额了,还有您的网速不行,根本不支持打开浏览器使用的。首先观察一下您的网速,如果没问题,就去清理一些不必要留下的内存。释放一些供它使用。也可以用QQ浏览器打开啊,这个浏览器的使用户是最多的,也是最好的哦。希望采纳哦,谢谢 ...

Myeclipe中将项目部署到服务器后气动Tomcat出现错误,应该是那些问题?如 ...
丢包了。xercesImpl.jar放在,web-inf\/lib下。重启WEB就行了。

tomcat服务器使用一段时间后宕掉,各位帮忙看看怎么解决
在最新的mysql中是无效的。其实要解决这个问题也有一个简单的方法,就是修改mysql的启动参数。

2000系统下tomcat运行一段时间就当机,必须重启系统才正常
终于想到了,有可能是您的哪里出现异常,然后没有关闭一些资源!重复出现异常的话,内存就会不断的被占用!直到内存被占完!感觉因该是这样。因为你是要重启系统后才正常的。。。

大华tomcat服务异常
首先,配置错误是导致tomcat服务异常的常见原因之一。Tomcat服务器的配置文件包括server.xml、web.xml等,这些文件中包含了服务器的各种设置。如果配置不当,比如端口冲突、内存设置不合理等,就可能导致服务启动失败或运行时异常。因此,在排查问题时,首先要检查这些配置文件是否正确无误。其次,资源不足也...

linux服务器上tomcat部署web项目,部署成功后访问不了,提示页面不存在是...
那就是部署错了,或路径问题。可看server.xml

tomcat过一段时间后,打开首页左下角显示完成但却是空白
重启电脑后,来到“文件恢复区”,点“彻底删除”!6。如果还是不行,试试:“金山急救箱”的“扩展扫描”,立即处理,重启!或者:可牛免费杀毒,浏览器医生,浏览器修复,立即扫描,立即修复!7。再不行,重启电脑,开机后,按F8,回车,回车,进到“安全模式”里,“高级启动选项”里,“最后一次...

Tomcat启动时出现异常,是什么原因?
实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它...

有个放在tomcat下的项目,该项目有个功能会在项目的根目录下生成一个uplo...
你控制tomcat 如果是通过新加一个server的方法,那么你的项目并没有放在tomcat里面,而是放在eclipse 的workspace文件夹下类似 .metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0(或者是tmp1)\\wtpwebapps\\ 这样的路径下,这时你的tomcat 的webapp下并没有东西,这种方法你重启服务器原先上传的东西就...

相似回答