|
|
|
|
|
|
|
为什么我的TOMCAT会隔了一段时间死掉?
|
2003年07月01日 10:47
|
|
|
|
我在solaris上装了一个tomcat 4.1.24, 用jd2连接apache,但是,隔一段时间,tomcat就会死掉,现在只能写一个监控程序隔一段时间检查tomcat是否死掉。。。
查看日志:里面有很多broken pipe的错误,如下: StandardWrapperValve[default]: Servlet.service() for servlet default threw exception java.io.IOException: Broken pipe at java.net.SocketOutputStream.socketWrite(Native Method) at java.net.SocketOutputStream.write(SocketOutputStream.java:91) at org.apache.jk.common.ChannelSocket.send(ChannelSocket.java:407) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:599) at org.apache.jk.server.JkCoyoteHandler.doWrite(JkCoyoteHandler.java:216) at org.apache.coyote.Response.doWrite(Response.java:524) at org.apache.coyote.tomcat4.OutputBuffer.realWriteBytes(OutputBuffer.java:384) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:439) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:359) at org.apache.coyote.tomcat4.OutputBuffer.writeBytes(OutputBuffer.java:411) at org.apache.coyote.tomcat4.OutputBuffer.write(OutputBuffer.java:398) at org.apache.coyote.tomcat4.CoyoteOutputStream.write(CoyoteOutputStream.java:110) at org.apache.catalina.servlets.DefaultServlet.copyRange(DefaultServlet.java:1996) at org.apache.catalina.servlets.DefaultServlet.copy(DefaultServlet.java:1745) at org.apache.catalina.servlets.DefaultServlet.serveResource(DefaultServlet.java:1073) at org.apache.catalina.servlets.DefaultServlet.doGet(DefaultServlet.java:506) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
请教大家有没有类似的经验和解决办法,谢谢!
|
|
|
|
|
|
Re: 为什么我的TOMCAT会隔了一段时间死掉?
|
2003年08月25日 16:52
|
|
|
|
|
|
|
|
|
Re: 为什么我的TOMCAT会隔了一段时间死掉?
|
2003年09月15日 13:44
|
|
|
你的请求数目太大造成的,你可以测下,能响应多少个请求/秒,而不出错。 www.5272.com是我的网站,有什么问题,可以去那里找我
|
|
|
|
|
|
Re: 为什么我的TOMCAT会隔了一段时间死掉?
|
2003年10月31日 22:17
|
|
|
我也遇到这个问题,其实我服务器的负载并不重,可是很奇怪,过一段就会当掉
不知道你的问题解决了没有,有没有经验可以谈谈,多谢
|
|
|
|
|
|
Re: 为什么我的TOMCAT会隔了一段时间死掉?
|
2003年11月14日 13:30
|
|
|
|
我这里也是这样,上网也没找到好的解决方案,总要过一段时间重启一下,都不知道是不是该写个线程监测一下,发现 Server 超过多少时间不响应了就重启
|
|
|
|
|
|
Re: 为什么我的TOMCAT会隔了一段时间死掉?
|
2003年11月14日 13:35
|
|
|
简单描述一下吧,我这里在一台 DELL 2650 2 XEON CPU + 1G RAM + 72G HD 服务器上就启了一个tomcat service, 因为公司人员也就 1k 左右,所以不想搞得太复杂,所以没搞 cluster.
最近我也发现负载不是很重的情况下,老是出现 tomcat 僵死的现象。 查 log 发现
2003-11-14 12:03:56 Broken pipe 2003-11-14 12:04:25 Broken pipe 2003-11-14 12:04:25 Connection reset 2003-11-14 12:53:41 StandardWrapper[/forum:mainservlet]: Waiting for 195 instance(s) to be deallocated 2003-11-14 12:53:41 StandardWrapper[/forum:default]: Waiting for 1138 instance(s) to be deallocated
真不知道这 1k 多的 instance 是哪来的????
|
|
|
|
|
|
Re: 为什么我的TOMCAT会隔了一段时间死掉?
|
2003年12月04日 10:34
|
|
|
我也碰到过类似的问题,并找出些问题,但是还是会隔段时间出现这种情况,不知道谁的TOMCAT服务器能够很稳定,并有之相关经验?我就先抛砖引玉吧:)。
(1)由于数据库的问题,由于事务引起数据库死锁。 这样修改程序就可以解决的。 (2)LINUX做WEB服务器时,由于它的线程机制会产生JVM出错的问题。 必须在/etc/profile 加上 export _JAVA_SR_SIGNUM = 12(或16) (3)有时会出现“tomcat最大线程数被耗尽”类似的错误提示。 我就把TOMCAT代码里的最大线程数放大到200,不过有时还会有这样的错误提示,不过相对以前的频率感觉好多了。。。
这些就是我碰到过的问题,希望大家能把自己碰到的问题和相应的解决方法交流下:)
|
|
|
|
|
|
Re: 为什么我的TOMCAT会隔了一段时间死掉?
|
2003年12月04日 11:52
|
|
|
我做了 LoadBalance,并把线程数开到了 1000 发现问题有所缓解,但是有时服务响应很慢,于是,开始怀疑网络资源有问题~~
在一个很偶然的情况下,看到 log 里有一个连 LDAP 服务 time out 的提示,那台服务器在美国,不属于我们中国区管,于是分析,可能是因为连这个服务器时 Web 服务器的 Queue 被堵塞了,于是后面的请求就被挂起了,所以很慢~~ 于是查核,发现那台美国的 LDAP server 已经改变了 IP, 并没有通知我们,在修改 Application 的 Configuration 后,系统开始提供稳定快速的服务。
另,在这次排错过程中,因为我还注意到有一个 Connection Refused 的错误,因为深圳与其它 China site 的分公司使用了同一个管理帐号来进行数据的 search, 所以,我怀疑是不是 LDAP 服务器对同一个帐号的登录次数有所限制(我向 AD 管理员咨询,他也不是很清楚),所以,我又请管理员开了一个给我专用的帐号。
经过以上动作,现在系统没有什么大的问题了~~
|
|
|
|
|
|
Re: 为什么我的TOMCAT会隔了一段时间死掉?
|
2004年02月24日 08:46
|
|
|
这中问题,我最有体会!!!! 我们工资用TOMCAT 作了 50多个虚拟主机!!! 还有一个tomcat 做了一个虚拟主机!!!
都发现了这种情况,看到大家分析后,加上自己的问题终结:
原因如下:
资源!!! 没有完全释放!!! 用完后要父NULL 值!! 数据库连接顺序关闭!! 优化JAVA虚拟机 加入相应的内存参数! TOMCAT 在LINUX 下不是很稳定! String 类型使用,不符合规范!! 不要在数据库中获取大段文本!!! JAVA 不推荐 用String 获取大量信息,造成内存溢出就是它!!!
每隔一段时间后,重新启动服务器,是必要的!! 大约2个周左右吧。。。
---------- 我遇到的问题,差不多就是这些了! 欢迎指教!!
|
|
|
|
|
|
Re: 为什么我的TOMCAT会隔了一段时间死掉?
|
2004年02月25日 19:07
|
|
|
to salajon: 你说的几种情况我在linux,jrun4环境下基本都遇到过,tomcat用的不多:
1),取到连接,程序还是出错/报异常,连接没有及时释放,造成下次从池中取了相同的连接,却不可以正常使用; --将data-source的remove-on-exceptions设成true,…… (2),俺们商用机上使用的j2se版本还停留在1.3.1版本上,有几次jrun的某个server都会自己down掉, 错误提示信息显示,java虚拟机当时的线程(Current Java Thread)出了问题; --Sun的建议是升级J2SE到1.4; (3),特别是高峰期,信息流量特大,连接数还是经常超支。 --app server优化的一部分
不知道Weblogic,会不会出现类似的问题,没正式商用过!
btw: export _JAVA_SR_SIGNUM = 12(或16)??这个是啥意思?请赐教!
|
|
|
|
|
|
Re: 为什么我的TOMCAT会隔了一段时间死掉?
|
2004年02月26日 09:32
|
|
|
楼上的,别客气,你问的具体说明请看下面的:
http://screaming-penguin.com/main.php?storyid=1651
|
|
|
|
|
|
Re: 为什么我的TOMCAT会隔了一段时间死掉?
|
2004年02月26日 16:08
|
|
|
--posted by: cooper Below is a clipping from Sun on working around JVM crashes under high thread counts in the JVM 1.3 for Linux
On Linux, use a larger signal number for hotspot thread suspension/resumption handler. The signal number being used is specified by environment variable _JAVA_SR_SIGNUM. Setting it to a number larger than SIGSEGV (11) will solve the problem. A good number to use is 12, which is SIGUSR2. Using signal 16 to work around the problem might have potential problems. So on tcsh, "setenv _JAVA_SR_SIGNUM 12" can solve the problem.
感谢感谢!
|
|
|
|
|
|
Re: 为什么我的TOMCAT会隔了一段时间死掉?
|
2004年04月16日 00:14
|
|
|
|
|
|
|
|
|
会不会是这个原因?
|
2006年11月06日 03:21
|
|
|
会不会是这个原因?
今天试验一个程序,想在java程序中实现防止盗链的功能。 想法是用filter拦截所有请求,然后检测requestURI的后缀是否为保护文件类型。 如果是则再检测该请求header中的referer变量。如果是来自本站的地址,则允许下载,否则不允许下载。 在tomcat下测试成功,但和apache整合后发现apache只把jsp等需要tomcat解释的程序文件发送给tomcat处理(在apache的http.conf中配置的类型),别的文件直接处理请求,不经过filter。所以无奈之下只好把所有的文件都让apache递交给tomcat。 结果每当请求mp3等较大的文件时,就报上面那个错(即使只有一个请求的时候)。 所以有可能也是你的apache中jk没配置正确的原因。
|
|
|
|
|
|
回复:为什么我的TOMCAT会隔了一段时间死掉?
|
2008年10月23日 11:21
|
|
|
|
顶下先,我现在也碰到这类问题 tomcat无缘无故down了 后台还没报错 想请问楼主你那个监控程序怎么写的啊?
|
|
|
|