Ok, now my answers .... hope your holiday is going well ....

For JNDI, I was initially using the JNDI PostGIS Example settings from
http://geoserver.geo-solutions.it/multidim/en/imagemosaic/mosaic_datastore.html,
so my configuration looked like:


 <Resource
        name="jdbc/stormprint"
        auth="Container"
        type="javax.sql.DataSource"
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://localhost/stormprint"
        username="XXXXXXXXXXXXXXXXX"
        password="XXXXXXXXXXXXXXXXX"
        maxActive="20"
        maxIdle="10"
        maxWait="10000"
        minEvictableIdleTimeMillis="300000"
        timeBetweenEvictionRunsMillis="300000"
        validationQuery="SELECT 1"/>

So, I followed the textbook example for JNDI for GeoServer, including a
validation query.  I was experiencing the described problem under this
example configuration.

I then started experimenting with the configuration, and found that if I
manually killed the db connections in postgres: "SELECT
pg_terminate_backend(PID#);", GeoServer would absolutely not recover from
this ... for display ... for anything ... it was just choking on any
JNDI-backed stores.  If I removed both of the eviction settings in the last
few rows (keeping validation), I could kill the connections as much as I
wanted, and GeoServer would recover.

So, what I ended up with now is:

 <Resource
  name="jdbc/stormprint"
  auth="Container"
  type="javax.sql.DataSource"
  driverClassName="org.postgresql.Driver"
  url="jdbc:postgresql://localhost/stormprint"
  username="XXXXXXXXXXXXXXXXXXXXXXXXX"
  password="XXXXXXXXXXXXXXXXXXXXXXXXX"
  maxActive="20"
  maxIdle="10"
  maxWait="10000"
  testOnBorrow="true"
  testOnReturn="true"
  validationQuery="SELECT 1"
  validationQueryTimeout="2"/>

As you can see, I added testOnBorrow and testOnReturn.

Looking at your code, which seems to be in
https://github.com/geotools/geotools/blob/12.x/modules/library/jdbc/src/main/java/org/geotools/jdbc/JDBCDataStoreFactory.java
(for my future reference), maybe I should be adding in a testWhileIdle to
the JNDI configuration?

Thoughts?

Thanks again,

Mike







On Fri, May 1, 2015 at 9:45 AM, Andrea Aime <[email protected]>
wrote:

> On Fri, May 1, 2015 at 3:40 AM, Mike Grogan <[email protected]>
> wrote:
>
>> (GeoServer 2.6.2, Postgres 9.3.6; Ubuntu 14.04; JNDI pools via Tomcat)
>>
>> I am experiencing another hard to track down issue with harvesting /
>> creating new image mosaics via REST ... that seems to be occurring after
>> time passes.
>>
>
> By the description this is similar to a typical connection pool issue with
> lack of use for several hours, the connections are closed by the database
> end, the connection pool has no way to know, and grabbing the connection
> ends up having to time out, with everything locked up (if you have a
> validation query, otherwise it fails in other ways).
>
> Do you have the validation query setup in your JNDI connection pool?
> Also, what about the followoing params, that we are setting up in our
> normal data stores, that are there to deal with the issues
> of connections not being used for several hours? (sorry for pasting code,
> today is a holiday in Italy, have to be expedient as I'm
> getting out of the house):
>
> Boolean testWhileIdle = (Boolean) TEST_WHILE_IDLE.lookUp(params);
>         if(testWhileIdle != null) {
>             dataSource.setTestWhileIdle(testWhileIdle);
>         }
>
>         Integer timeBetweenEvictorRuns = (Integer)
> TIME_BETWEEN_EVICTOR_RUNS.lookUp(params);
>         if(timeBetweenEvictorRuns != null && timeBetweenEvictorRuns > 0) {
>
> dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictorRuns * 1000l);
>         }
>
>         Integer minEvictableTime = (Integer)
> MIN_EVICTABLE_TIME.lookUp(params);
>         if(minEvictableTime != null) {
>             dataSource.setMinEvictableIdleTimeMillis(minEvictableTime *
> 1000l);
>         }
>
>         Integer evictorTestsPerRun = (Integer)
> EVICTOR_TESTS_PER_RUN.lookUp(params);
>         if(evictorTestsPerRun != null) {
>             dataSource.setNumTestsPerEvictionRun(evictorTestsPerRun);
>         }
>
> Cheers
> Andrea
>
> --
> ==
> GeoServer Professional Services from the experts! Visit
> http://goo.gl/NWWaa2 for more information.
> ==
>
> Ing. Andrea Aime
> @geowolf
> Technical Lead
>
> GeoSolutions S.A.S.
> Via Poggio alle Viti 1187
> 55054  Massarosa (LU)
> Italy
> phone: +39 0584 962313
> fax: +39 0584 1660272
> mob: +39  339 8844549
>
> http://www.geo-solutions.it
> http://twitter.com/geosolutions_it
>
> *AVVERTENZE AI SENSI DEL D.Lgs. 196/2003*
>
> Le informazioni contenute in questo messaggio di posta elettronica e/o
> nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il
> loro utilizzo è consentito esclusivamente al destinatario del messaggio,
> per le finalità indicate nel messaggio stesso. Qualora riceviate questo
> messaggio senza esserne il destinatario, Vi preghiamo cortesemente di
> darcene notizia via e-mail e di procedere alla distruzione del messaggio
> stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso,
> divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od
> utilizzarlo per finalità diverse, costituisce comportamento contrario ai
> principi dettati dal D.Lgs. 196/2003.
>
>
>
> The information in this message and/or attachments, is intended solely for
> the attention and use of the named addressee(s) and may be confidential or
> proprietary in nature or covered by the provisions of privacy act
> (Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection
> Code).Any use not in accord with its purpose, any disclosure, reproduction,
> copying, distribution, or either dissemination, either whole or partial, is
> strictly forbidden except previous formal approval of the named
> addressee(s). If you are not the intended recipient, please contact
> immediately the sender by telephone, fax or e-mail and delete the
> information in this message that has been received in error. The sender
> does not give any warranty or accept liability as the content, accuracy or
> completeness of sent messages and accepts no responsibility  for changes
> made after they were sent or for other risks which arise as a result of
> e-mail transmission, viruses, etc.
>
> -------------------------------------------------------
>
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Geoserver-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to