Sun Web或App Serverconfiguration可能导致什么“由于临时错误,请求无法提供服务”

我不是这台服务器的系统pipe理员,但是我正在帮助那些系统pipe理员的团队快速find修复。 由于这个原因,我没有访问所有的服务器configuration文件。

就这样,这是我的问题:

这是关于使用Sun Java System Web Server 6.1和Sun Java System Application Server 8.1的Solaris机器上的Java EE应用程序。 Web服务器充当到应用程序服务器的请求的代理。 我的理解是,它也被设置为一个负载平衡器,但它只指向一个应用程序实例,所以似乎没有什么可以平衡。

当通过代理向应用程序发出请求时,我们会间歇性地看到一个紫色/蓝色的页面,内容如下:

Due to a temporary error the request could not be serviced. The problem could be because: - The server is busy. - The server is temporarily unavailable. You may choose to resubmit the request, but be aware that the request might have already been processed. Depending on the type of request, you may not want it to be processed twice. Please click here to re-submit. 

有几件事要注意:

  1. 正如我所提到的,我们间断地看到这个屏幕可能是每100-500个请求中的一个。
  2. 当我们看到屏幕时,立即返回。 换句话说,它似乎不是超时相关的。
  3. 刷新页面将导致请求的实际应用程序页面显示。 换句话说,在错误页面加载,刷新和实际页面加载之间的1-2秒内似乎没有临时服务器停机。
  4. 我不认为networking是一个问题,因为networking和应用程序服务器在同一个主机上。
  5. 出现此错误页面时,Web服务器日志具有以下错误:[02 / Feb / 2009:15:37:32]警告(19614):报告:lb.runtime:ROUT1014:非幂等请求/ applicationContext无法重试。 [02 / Feb / 2009:15:37:32] info(19614):reports:lb.runtime:RNTM3003:错误服务请求:所选服务器无法服务

什么可能导致这个错误页面?

谢谢,杰夫

更新:

这是负载均衡器configuration:

 <!DOCTYPE loadbalancer PUBLIC“ -  // Sun Microsystems Inc. //DTD Sun ONE Application Server 7.1 // EN”“sun-loadbalancer
 _1_1.dtd“>
 <负载均衡器>
     <cluster name =“cluster1”>
         <instance name =“instance1”enabled =“true”disable-timeout-in-minutes =“60”listeners =“http://host.domain.com:32000”/>
         <web-module context-root =“/ applicationContext”enabled =“true”disable-timeout-in-minutes =“60”error-url =“sun-http-lberror.html”/>
         <health-checker url =“/ applicationContext”interval-in-seconds =“30”timeout-in-seconds =“10”/>
     </集群>
     <cluster name =“other_cluster”>
          <instance name =“other_host”enabled =“true”disable-timeout-in-minutes =“60”listeners =“http://host2.domain.com:80000”/>
          </ web-module context-root =“/ otherContext”enabled =“true”disable-timeout-in-minutes =“60”error-url =“./ sun-http-lberror.html”/>
          <health-checker url =“/ otherContext”interval-in-seconds =“30”timeout-in-seconds =“10”/>
     </集群>
     <property name =“reload-poll-interval-in-seconds”value =“60”/>
     <property name =“response-timeout-in-seconds”value =“600”/>
     <property name =“https-routing”value =“false”/>
     <property name =“require-monitor-data”value =“false”/>
 </负载均衡器>

看起来,如果代理服务器按照您的说法设置为负载平衡,并且只能指向一个服务器,则有时候负载平衡认为目标应用程序服务器太忙,并且会出现该错误。

你能把你看到的错误与服务器上的任何负载相对应吗? 有没有办法使负载均衡和testing? 你可以configuration负载平衡器设置/查看它们是否有非常保守的阈值?

我会怀疑运行状况检查function,并确定后端服务器不可用。 也许尝试增加运行状况检查程序configuration中的超时值或完全禁用它。 由于只有一个应用程序服务器进行代理,所以这不会导致任何丢失的function。