根据我的经验使用下面的方法可以有效的缓解tomcat死掉的问题:
1.数据库操作尽量使用连接池,最好用tomcat自己提供的连接池,这样可以尽量缩短数据库操作的时间,减少内存中连接对象的数目.
2.进行数据库操作时尽量使用一个connection,这样可以减少连接数与数据库操作时间
3.修改tomcat配置,将tomcat默认内存设大一些
4.不要用statement执行多次查询
5.使用io,数据库操作时一定要用close方法关闭这些对象占用的资源
6.在string和stringbuffer的选择上也应该注意
其实出现这种情况很大的原因是代码造成的,因为jvm是自动垃圾回收的(然而这种回收的效率是很低的),所以写代码时一定要注意内存和资源的问题.
以前我参与了一个项目,平台刚搭建之初,系统也经常出现outofmemory的问题,发现是用statement执行多次查询的原因,在oracle里面查有很多连接不能有效释放,改掉之后就从来没有出现过了.但后来访问量上升,一天至少有上百万次,经常出现ioexception,发现是不能连上数据库的原因,用netstat -an一查,发现有大量的与数据库的io连接,导致socket端口不够造成网站速度很慢(这里面的原因是很多地方使用数据库操作不当的原因).
1.数据库操作尽量使用连接池,最好用tomcat自己提供的连接池,这样可以尽量缩短数据库操作的时间,减少内存中连接对象的数目.
2.进行数据库操作时尽量使用一个connection,这样可以减少连接数与数据库操作时间
3.修改tomcat配置,将tomcat默认内存设大一些
4.不要用statement执行多次查询
5.使用io,数据库操作时一定要用close方法关闭这些对象占用的资源
6.在string和stringbuffer的选择上也应该注意
其实出现这种情况很大的原因是代码造成的,因为jvm是自动垃圾回收的(然而这种回收的效率是很低的),所以写代码时一定要注意内存和资源的问题.
以前我参与了一个项目,平台刚搭建之初,系统也经常出现outofmemory的问题,发现是用statement执行多次查询的原因,在oracle里面查有很多连接不能有效释放,改掉之后就从来没有出现过了.但后来访问量上升,一天至少有上百万次,经常出现ioexception,发现是不能连上数据库的原因,用netstat -an一查,发现有大量的与数据库的io连接,导致socket端口不够造成网站速度很慢(这里面的原因是很多地方使用数据库操作不当的原因).
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货