linux 下 tomcat 运行报错 Broken pipe

感谢:http://hi.baidu.com/liupenglover/blog/item/4048c23ff19f1cd67d1e7184.html

有可能是linux的线程机制会产生JVM出错的问题,特别是在连接高峰期间经常出现这样的问题,tomcat在linux下也出现类似情况。

  解决办法是在环境变量中设置: _JAVA_SR_SIGNUM = 12 基本就可以解决。

在WIN环境变量中设置: _JAVA_SR_SIGNUM=12, 若Linux下用 export _JAVA_SR_SIGNUM=12, 基本就可以解决.

  sun的解释:

  --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.

---------------------

本文来自 ruan_learning 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/ruan_learning/article/details/50502366?utm_source=copy

这个异常是由于以下几个原因造成。

1、客户端再发起请求后没有等服务器端相应完,点击了stop按钮,导致服务器端接收到取消请求。  通常情况下是不会有这么无聊的用户,出现这种情况可能是由于用户提交了请求,服务器端相应缓慢,比如业务逻辑有问题等原因,导致页面过了很久也没有刷新出来,用户就有可能取消或重新发起请求。

2、Tomcat服务器在接受用户请求的时候,有其自身的处理能力,线程、服务器等各个资源限制,超出Tomcat承载范围的请求,就会被tomcat停掉,也可能产生该错误。

3、linux的线程机制会产生JVM出错的问题,特别是在连接高峰期间经常出现这样的问题,tomcat在linux下也出现类似情况。 
Java代码

  1. 1.sun的解释:
  2. 2.--posted by: cooper
  3. 3.Below is a clipping from Sun on working around JVM crashes under high
  4. 4.thread counts in the JVM 1.3 for Linux
  5. 5.
  6. 6.On Linux, use a larger signal number for hotspot thread
  7. 7.suspension/resumption handler. The signal number being used is
  8. 8.specified by environment variable _JAVA_SR_SIGNUM. Setting it to a
  9. 9.number larger than SIGSEGV (11) will solve the problem. A good number
  10. 10.to use is 12, which is SIGUSR2. Using signal 16 to work around the
  11. 11.problem might have potential problems. So on tcsh, "setenv
  12. 12._JAVA_SR_SIGNUM 12" can solve the problem.
  13. sun的解释:
  14. --posted by: cooper
  15. Below is a clipping from Sun on working around JVM crashes under high
  16. thread counts in the JVM 1.3 for Linux
  17. On Linux, use a larger signal number for hotspot thread
  18. suspension/resumption handler. The signal number being used is
  19. specified by environment variable _JAVA_SR_SIGNUM. Setting it to a
  20. number larger than SIGSEGV (11) will solve the problem. A good number
  21. to use is 12, which is SIGUSR2. Using signal 16 to work around the
  22. problem might have potential problems. So on tcsh, "setenv
  23. _JAVA_SR_SIGNUM 12" can solve the problem.

复制代码

“_JAVA_SR_SIGNUM=12”等号两边必须没有空格,等号是半角

资料:
Broken pipe产生的原因通常是当管道读端没有在读,而管道的写端继续有线程在写,就会造成管道中断。(由于管道是单向通信的) SIGSEGV(Segment fault)意味着指针所对应的地址是无效地址,没有物理内存对应该地址。 以下是UNIX的信号解释: 11 / SIGSEGV: Unerlaubter Zugriff auf Hauptspeicher (Adressfehler). 12 / SIGUSER2: User-defined Signal 2 (POSIX). 把_JAVA_SR_SIGNUM改成12只是将信号至成user-defined,让它不报出来而已,不能解决问题。 建议采取的方式: 
1. 资源没有完全释放,用完后要至NULL 值(JAVA的GC没那么完善) 
2. 数据库连接顺序关闭!(RS,PS,CONN) 
3. 优化JAVA虚拟机 加入相应的内存参数! 
4. 不要在数据库中获取大段文本(即一个栏位的值不要太大) 
5. JAVA 不推荐 用String 获取大量信息。(容易造成内存泄露,建议用StringBuffer) 
6. 页面重复提交 
7. 尽量将METHOD移到JAVA中,在JSP中所有的方法都看做全局变量,编译执行本身就有很多问题。 
8. 如果是查询功能,尽可能的使用非XA(事务)。 
9. 尽量用较新较稳定版本的JDK,低版本的JVM本身也有很多BUG,比如1。5的垃圾回收比起1。2,1。3一定是非常明显的进步。 
10. LINUX系统本身没有这么稳定,有些问题无法避免的~~:)

分类: 软件设计

标签: Broken pipe管道tomcat

原文地址:https://www.cnblogs.com/yaowen/p/9726453.html

时间: 2024-10-09 00:28:10

linux 下 tomcat 运行报错 Broken pipe的相关文章

Linux环境下Tomcat运行报错java.lang.OutOfMemoryError

va.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "http-bio-8080-exec-5" java.lang.OutOfMemoryError: PermGen space 进入Tomcat中的/bin/catalina.sh 在catalina.sh中添加如下代码: #此处为添加代码 JAVA_OPTS="-Djava.awt.headless=true -Dfile

Linux环境Tomcat运行报错java.lang.OutOfMemoryError

java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "http-bio-8080-exec-5" java.lang.OutOfMemoryError: PermGen space 进入Tomcat中的/bin/catalina.sh 在catalina.sh中添加如下代码: #此处为添加代码JAVA_OPTS="-Djava.awt.headless=true -Dfil

Linux下Oracle11G RAC报错:在安装oracle软件时报file not found一例

Linux下Oracle11G RAC报错:在安装oracle软件时报file notfound一例 1.现象 之前安装一切都比較顺利,安装oracle软件时,进度到30%时报错:file not found(/u01/app/oracle/product/11.2.0/db_1/owb/external/oc4j_applications/applications/WFMLRSVCApp.ear) 2.应对策略 1.  改变选择语言处.仅仅选择"English": 2.  又一次解压

<<< Tomcat运行报错IOException while loading persisted sessions: java.io.EOFException

解决方法:将work下面的文件清空,主要是*.ser文件,或者只是删除掉session.ser即可以解决. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

jconsole、jvisualvm监控远程linux下tomcat运行情况的配置

1.编辑tomcat/bin/catalina.sh 找到Execute The Requested Command,把以下代码加入到这段注释上面(中间无换行): CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=10.12.116.135 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8088 -Dcom.sun.management.jmxr

linux下安装php报错configure: error: Cannot find MySQL header files under /usr/include/mysql.

linux下安装php报错configure: error: Cannot find MySQL header files under /usr/include/mysql. 2013-03-04 15:34wdjhz | 分类:服务器软件 | 浏览5318次 configure: error: Cannot find MySQL header files under /usr/include/mysql.Note that the MySQL client library is not bun

tomcat运行报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost].

tomcat运行报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost].多半情况是找不到jar包 解决办法: 右键项目-> 属性->添加lib 原文地址:https://www.cnblogs.com/firstdream/p/8401626.html

Linux下tomcat运行命令

tomcat启动 [[email protected] webapps]# /usr/local/tomcat7.0/bin/catalina.sh start startup.sh的源代码,其实就是执行   catalina.sh start  这个命令,效果是一样的,根本不是什么调试模式,调试模式的命令是  catalina.sh debug 查看报错日志 cat /usr/local/tomcat7.0/logs/catalina.out linux下实时查看tomcat运行日志 1.先切

linux下发布webservice报错

本地测试的WAR包发布到tomcat下报下面的错误:起初因为环境中的tomcat有项目在运行,没想到过tomcat是window下的版本,因为可以跑其他项目,后来换个linux下的版本解决问题 2015-08-14 18:33:23,040 ERROR [org.springframework.web.context.ContextLoader] Context initialization failedorg.springframework.beans.factory.BeanCreation