一个关于在xp系统中的IIS与JBOSS的连接方式,与你的Apache与JBOSS的方式出现相似的问题,可能会有所帮助,望自努力分析
http://issues.apache.org/bugzilla/show_bug.cgi?id=30551我的观点:
根据以上文档中提到的内容,最终确认的关键一点就是下面的内容:
So the simple reason can be that used OS is workstation level (XP) and
imposes the limit on number of concurrent connections to IIS
For workstations this is 10 IIRC.
So this means that IIS refused connection.
I would suggest that you guys use any Server version of Windows OS
if high load is required.所以 我建议楼主对自己系统的版本确认,并对当前使用的apache server的版本进行更新,最好是下载最新的版本!并且重点寻找相关apache server中定义“the limit on number of concurrent connections ”部分的配置内容,应该类似于port定义那样的一些参数设置,大都在conf目录中,自己查找一下吧以上内容,我也不确定,共同学习。

解决方案 »

  1.   

    哦 你可以变动一下apache server的配置文件 conf/httpd.conf
    尽量放大以下(其他的参数自己学习一下吧)的参数值,看看是否能够解决#一个连接的最大请求数量
    MaxKeepAliveRequests 100    这个值放大到10000#
    # KeepAliveTimeout: Number of seconds to wait for the next request from the
    # same client on the same connection.
    #
    KeepAliveTimeout 15        这个值放大试试#NT环境,只能配置这个参数来提供性能
    <IfModule mpm_winnt.c> 
    #每个进程的线程数,最大1920。NT只启动父子两个进程,不能设置启动多个进程
    ThreadsPerChild 1900 
    每个子进程能够处理的最大请求数
    MaxRequestsPerChild  10000
    </IfModule>
      

  2.   

    MaxKeepAliveRequests 5000   
    ThreadsPerChild 1000然后将JBOSS中的tomcat中的server.xml中的
       maxThreads="1000" minSpareThreads="150" maxSpareThreads="500"
             enableLookups="false" redirectPort="8443" acceptCount="200"
      

  3.   

    我把这个改了之后  又要出现
    2005-12-02 03:13:51,031 ERROR [org.jboss.web.localhost.Engine] StandardWrapperValve[loginservlet]: Servlet.service() for servlet loginservlet threw exception
    java.lang.NullPointerException
    at com.cdsf.cr.servlet.LoginServlet.doGet(LoginServlet.java:69)
    at com.cdsf.cr.servlet.LoginServlet.doPost(LoginServlet.java:192)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:72)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
    at org.jboss.web.tomcat.security.JBossSecurityMgrRealm.invoke(JBossSecurityMgrRealm.java:275)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:297)
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:371)
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:731)
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:663)
    at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:859)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:595)
      

  4.   

    估计是TOMCAT和apache的线程数要一致或者Tomcat的线程数要大才能。回头改了看看
      

  5.   

    艾。TOMCAT的线程比apache的线程数大还是同样的错误。一样的还是错。。
    这下就搞不明白了
      

  6.   

    什么都不用修改了!JBOSS3.2.6的内核是TOMCAT5.0.28,参照我写的一篇文档上所述的,相信不会错!
    下面这段错误2005-12-01 23:44:33,578 ERROR [org.apache.jk.common.ChannelSocket] Error, processing connection
    java.net.SocketException: Software caused connection abort: recv failed
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
    at org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:593)
    at org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:531)
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:651)
    at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:859)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:595)
    我也碰到过,是由于AJP13服务器负载平衡协作中间件在APACHE与TOMCAT的命名管道出现问题,一般的你用DOS命令启动JBOSS时,就可以看到,AJP13在JBOSS下是监听8009端口的,你可以在你的APACHE安装的目录下,http.conf文件所在目录下建一个,worker2.properties文件,然后在这个文件中指定一下,AJP13通讯的端口为8009,当然前提是你必须有下载APACHE与TOMCAT5.0.28协作的连接管理器,JK2.SO文件,下面我把我本机整合成功的的worker2.properties文件显示出如下:[shm]
    info=Scoreboard. Requried for reconfiguration and status with multiprocess servers.
    file=anon# Defines a load balancer named lb. Use even if you only have one machine.
    [lb:lb]# Example socket channel, override port and host.
    [channel.socket:localhost:8019]
    port=8019
    host=127.0.0.1# define the worker
    [ajp13:localhost:8009]
    channel=channel.socket:localhost:8009
    group=lb# Map the Tomcat examples webapp to the Web server uri space
    [uri:/*.jsp]
    group=lb
    [uri:/Servlet/*]
    group=lb
    [status:]
    info=Status worker, displays runtime information[uri:/jkstatus/*]
    info=The Tomcat /jkstatus handler
    group=status:注意,上面一段中# Map the Tomcat examples webapp to the Web server uri space
    [uri:/*.jsp]
    group=lb
    [uri:/Servlet/*]这里表示,所有JSP文件结尾或以/Servlet/*目录下面的请求的就交给JBOSS处理,这样你在WEB.XML文件中,写SERVLET映射的时候,最好就把它加一级目录,
    所有.html文件结尾的就由APACHE去解析,达到服务器资源负载平衡的目的.
    如果还有不明白的请加我的MSN:[email protected]详谈