各位拜托了事情紧急到不行了.tomcat运行一会项目就会死掉

hellen_cap 2007-08-09 03:27:35
如题,tomcat下放了大概7个hiberante的项目,用的时候会几个同时用,但用一会tomcat5占用率100%,而且登陆,就登陆不了了,并且tomcat不报错.

不知道什么原因,我猜的是,要么是session没有及时释放,导致死机,要么就是hibernate连接池配置不当

我还不会配置什么连接池

高手路过都留下些意见,或者顶一下也行,

过两天有要人来看我们的项目,演示时间长达两小时,这要出错了,别说老板,就是我也过不去了
拜托了



...全文
475 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingtianchao1988 2010-07-22
  • 打赏
  • 举报
回复
如果你用SSH框架:你只要把每一次用到session的地方,把它关了!再把连接池里配上如下代码:
<property name="maxActive">
<value>100</value>
</property>
<property name="maxIdle">
<value>30</value>
</property>
<property name="maxWait">
<value>10000</value>
</property>
zhuzhigangmsn 2007-08-11
  • 打赏
  • 举报
回复
你为每个项目配置一个连接池是看看!
hellen_cap 2007-08-11
  • 打赏
  • 举报
回复
在tomcat配置文件server.xml中的<Connector ... />配置中,和连接数相关的参数有:
minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100
enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数,应同时加大这两个参数。

我的情况就是突然就产生打不开页面的情况了,好像就是因为超过了tomcat允许的最大连接了

这样的话,是不是把tomcat 的最大连接数改了就可以了呀.

hellen_cap 2007-08-11
  • 打赏
  • 举报
回复
现在又有新情况了,

我把资源管理器打开,java.exe占几乎不点球cpu,而海量查询的时候内存一下就上去了,大概过二十分钟内在才能下来.

海量查询我用的是hibernate的setFirstResult,和setMaxResult

可是库里现在有30多万条数据,如果我想查最后一页的话,hibernate的setFirstResult就会把这几十万条数据都查一遍,有没有好一点的办法能够让数据库直接定位到最后一页的开始条数呢,或者有没有其他更好的办法

现在查前几页还好.查十几页时就不行了

这样的耗内存法,也会造成死机的说.

另外,我对hibernate 也不是很熟,我一直想知道,hibernate的连接池数量默认是几个啊,他有一个属性是可以设置连接池数量的

guoliang2006chang 2007-08-10
  • 打赏
  • 举报
回复
up
little06 2007-08-10
  • 打赏
  • 举报
回复
probe 查看一下tomcat状态
有汉化版
easyroom 2007-08-10
  • 打赏
  • 举报
回复
你怎么知道不抱错,数据库操作记日志了吗?
hellen_cap 2007-08-10
  • 打赏
  • 举报
回复
感动.第二天上来有这么多人关注,

感谢疯狂的石头,你的意思是数据库连接应该配在tomcat下,而不是项目里的hiberante.xml里??

那我tomcat下面有多个项目,这样的话每运行一个项目是不是就初使化一个连接池,这样造成了死机,而且我多个项目使用的都是同一个库,

那多个项目可以使用同一个连接池吗,就是配在tomcat下的那个.


如果把数据库连接配在了tomcat下,那么在项目里又怎么把数据库连接配到hiberante的配置文件里呢
jingtao8177 2007-08-09
  • 打赏
  • 举报
回复
up
zjf405 2007-08-09
  • 打赏
  • 举报
回复
上面的是我从tomcat中server.xml文件提取出来的,你只需要改上面对应的地方就ok了
zjf405 2007-08-09
  • 打赏
  • 举报
回复
贴一下我项目中用到的连接池配置文件供你参考吧,我用的是mysql数据库,你相应设置一下参数就好了,另外检查你的代码里面看看有无session用完了后没有关闭,切记!!!
<Context path="/docsys" docBase="docsys"
debug="5" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_DBTest_log." suffix=".txt"
timestamp="true"/>
<Resource name="mysql_ds"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="mysql_ds">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>

<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>

<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>

<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>

<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>123</value>
</parameter>

<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>

<parameter>
<name>url</name> <value>jdbc:mysql://localhost:3306/docsys?autoReconnect=true</value>
</parameter>
</ResourceParams>
</Context>
hellen_cap 2007-08-09
  • 打赏
  • 举报
回复
现在我猜是连接池的事,因为有人说在海量查询之后,查看oracle数据库并没有哪个表被锁,所以求一个优化的连接池配置了


hiberante+tomcat的确良
hellen_cap 2007-08-09
  • 打赏
  • 举报
回复
现在
shuai45 2007-08-09
  • 打赏
  • 举报
回复
没遇到过死机的情况.
但我分析:
1数据库查询超时然后死锁,导致服务器崩溃.
2程序中出现死循环等致命的错误.
3大量内存泄露
hellen_cap 2007-08-09
  • 打赏
  • 举报
回复
我哭了,都没人理我了,我真的是很急啊,拜托都顶一下吧,有分的
hellen_cap 2007-08-09
  • 打赏
  • 举报
回复
可是hibernate怎么及时释放数据库的连接呢

我发现一个hiberante的东西叫hibernate.transaction.auto_close_session不知道这个东西可不可以把session及时释放呢,我在项目里肯定是释放过的,但是我就不知道有没有别的地方忘了释放的.

并且项目里还掺杂了一些struts的模块,没有用hiberante.不知道这个会不会影响
gaohang_dust 2007-08-09
  • 打赏
  • 举报
回复
关注
xdw555 2007-08-09
  • 打赏
  • 举报
回复
估计是数据库的连接没及时释放

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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