Web-server – What Sun Web or App Server config can cause “Due to a temporary error the request could not be serviced”

application-serverjavasolarissunweb-server

I'm not the system administrator for this server but I'm trying to help the group who are sys admins to find a fix quickly. For this reason, I don't have access to all of the server configuration files.

With that out of the way, here's my question:

This is regarding a Java EE application on a Solaris machine with Sun Java System Web Server 6.1 and Sun Java System Application Server 8.1. The web server is acting as a proxy for requests going to the application server. My understanding is that it's also set up as a load balancer, though it only points to one application instance so it seems there's nothing to balance.

When making requests through the proxy to the application, we're intermittently seeing a purple/blue page that says the following:

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.

A few things to note:

  1. As I mentioned, we see this screen intermittently maybe one request out of every 100-500.
  2. When we do see the screen, it is returned without delay. In other words, it doesn't seem to be timeout related.
  3. Refreshing the page will cause the actual application page being requested to display. In other words, it doesn't seem that there was a temporary server outage in that 1-2 seconds between the error page loading, the refresh, and the real page loading.
  4. I don't think the network is an issue since the web and application servers are on the same host.
  5. The web server logs have the following error when this error page appears:
    [02/Feb/2009:15:37:32] warning (19614): reports: lb.runtime: ROUT1014: Non-idempotent request /applicationContext cannot be retried.
    [02/Feb/2009:15:37:32] info (19614): reports: lb.runtime: RNTM3003 : Error servicing the request : selected server could not service

What could be causing this error page to come up?

Thanks,
Jeff

Update:

Here's the load balancer configuration:

<!DOCTYPE loadbalancer PUBLIC "-//Sun Microsystems Inc.//DTD Sun ONE Application Server 7.1//EN" "sun-loadbalancer
_1_1.dtd">
<loadbalancer>
    <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>
    <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" />
    </cluster>
    <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"/>
</loadbalancer>

Best Answer

It would seem that if the proxy is set up to load balance as you say, and there is only one server it can point to, that sometimes the load balance deems the target application server too busy, and gives you that error.

Can you correspond the error you are seeing to any sort of load on the server? Is there a way to take the load balancing out of the equation and test? Can you configure the load balancer settings/view them to see if it has very conservative thresholds?

Related Topic