[Geoserver-devel] Geoserver read timeout error

Hi All

My client is receiving a read timeout error when I request large products like imagery. We made the session timeout error longer (ie 2 min) and still received the error for certain products (I’m assuming larger ones).

My question is …

What is the thread execution order for GeoServer products?

For example. My client makes a WPS call to get imagery. If another user makes a GetCapabilities call, does it stop the WPS call and then resume when the GetCapabilities call completes? Something like this may be causing the read timeout error we are receiving.

Here’s the error we are seeing

23:08:19,987 WARN [mil.navy.fnmoc.gis.doc.dataordering.retrieval.RetrieverRunner] (pool-24-thread-1) Exception encountered while running retriever; will retry the item later.: java.io.IOException: Bad HTTP response: url=https://imetoc.nps.edu/geoserver/wps, code=‘503’, msg=‘Service Unavailable’, type=text/html;charset=“iso-8859-1”, response='

503 Service Temporarily Unavailable

Service Temporarily Unavailable

The server is temporarily unable to service your

request due to maintenance downtime or capacity

problems. Please try again later.


Apache/2.2.15 (Red Hat) Server at imetoc.nps.edu Port 443

at mil.navy.fnmoc.gis.doc.dataordering.WPSClient.postXML(WPSClient.java:319) [classes:]

at mil.navy.fnmoc.gis.doc.dataordering.WPSClient.getCoverage(WPSClient.java:131) [classes:]

at mil.navy.fnmoc.gis.doc.dataordering.WPSClient.getCoverage(WPSClient.java:90) [classes:]

at mil.navy.fnmoc.gis.doc.dataordering.CoverageFacade.getCoverage(CoverageFacade.java:55) [classes:]

at mil.navy.fnmoc.gis.doc.dataordering.grid.GridFacade.cache(GridFacade.java:126) [classes:]

at mil.navy.fnmoc.gis.doc.dataordering.grid.GridRetriever.retrieve(GridRetriever.java:41) [classes:]

at mil.navy.fnmoc.gis.doc.dataordering.retrieval.RetrieverRunner.run(RetrieverRunner.java:170) [classes:]

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_45]

at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_45]

at mil.navy.fnmoc.gis.doc.dataordering.retrieval.RetrieverQueue$FutureWrapper.run(RetrieverQueue.java:475) [classes:]

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_45]

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_45]

at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]

Dominique Bessette

Engineer, Software

General Dynamics Information Technology

Supporting Fleet Numerical Meteorology and Oceanography Center (FNMOC)

Office: 619-881-2748

Dominique,

In general... with long running WPS processes I would consider using asynchronous process execution and poll for status instead of holding a network connection open. With network timeouts there are numerous sources and they can change depending on network topology (clients, proxies, servers). A request that works within a certain constraint in one topology will fail with that same constraint in another… Anytime you go over ~60s you are exposing yourself to these issues. That being said if you’re going to implement a async WPS client be sure to use HTTP client connection pooling...

An exact answer to your specific question depends on the level of abstraction you’re asking about, the resources available and a given scenario. A WPS GetCapabilities call won’t block a running Execute as an intent of design.

Tom Kunicki
Software Engineer | Boundless
tkunicki@anonymised.com
917-460-7212
@boundless

On Dec 23, 2013, at 12:08 PM, Bessette-Halsema, Dominique E <Dominique.Bessette@anonymised.com> wrote:

Hi All

My client is receiving a read timeout error when I request large products like imagery. We made the session timeout error longer (ie 2 min) and still received the error for certain products (I’m assuming larger ones).

My question is …

What is the thread execution order for GeoServer products?

For example. My client makes a WPS call to get imagery. If another user makes a GetCapabilities call, does it stop the WPS call and then resume when the GetCapabilities call completes? Something like this may be causing the read timeout error we are receiving.

Here’s the error we are seeing

23:08:19,987 WARN [mil.navy.fnmoc.gis.doc.dataordering.retrieval.RetrieverRunner] (pool-24-thread-1) Exception encountered while running retriever; will retry the item later.: java.io.IOException: Bad HTTP response: url=https://imetoc.nps.edu/geoserver/wps, code='503', msg='Service Unavailable', type=text/html;charset="iso-8859-1", response='<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>503 Service Temporarily Unavailable</title>
</head><body>
<h1>Service Temporarily Unavailable</h1>
<p>The server is temporarily unable to service your
request due to maintenance downtime or capacity
problems. Please try again later.</p>
<hr>
<address>Apache/2.2.15 (Red Hat) Server at imetoc.nps.edu Port 443</address>
</body></html>
'
        at mil.navy.fnmoc.gis.doc.dataordering.WPSClient.postXML(WPSClient.java:319) [classes:]
        at mil.navy.fnmoc.gis.doc.dataordering.WPSClient.getCoverage(WPSClient.java:131) [classes:]
        at mil.navy.fnmoc.gis.doc.dataordering.WPSClient.getCoverage(WPSClient.java:90) [classes:]
        at mil.navy.fnmoc.gis.doc.dataordering.CoverageFacade.getCoverage(CoverageFacade.java:55) [classes:]
        at mil.navy.fnmoc.gis.doc.dataordering.grid.GridFacade.cache(GridFacade.java:126) [classes:]
        at mil.navy.fnmoc.gis.doc.dataordering.grid.GridRetriever.retrieve(GridRetriever.java:41) [classes:]
        at mil.navy.fnmoc.gis.doc.dataordering.retrieval.RetrieverRunner.run(RetrieverRunner.java:170) [classes:]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_45]
        at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_45]
        at mil.navy.fnmoc.gis.doc.dataordering.retrieval.RetrieverQueue$FutureWrapper.run(RetrieverQueue.java:475) [classes:]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_45]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_45]
        at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]

Dominique Bessette
Engineer, Software
General Dynamics Information Technology
Supporting Fleet Numerical Meteorology and Oceanography Center (FNMOC)
Office: 619-881-2748

------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT
organizations don't have a clear picture of how application performance
affects their revenue. With AppDynamics, you get 100% visibility into your
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel