2015-11-15 22 views
6

HikariCP belgesinde bulamadığım bir cevap için hepinize teşekkür ederim. Hikari bağlantıları nasıl geri dönüştürüyor?

minimumIdle 1 
idleTimeout 10 minutes 
maxLifeTime 20 minutes 

benim uygulamanın boşta kalır

gece boyunca (kimse yapma istekleri ile), geçen bağlantı kaldıktan sonra, Hikari 10 dakika bağlantının son istekten sonra her bağlantıyı kapatmak için bekliyoruz: Verilen Aşağıdaki havuz parametrelerini ayarlamak kapalı yeni bir tane oluşturun (ve havuzda tutun) ve ardından bu boş bağlantıyı her 20 dakikada bir kapatın ve yeniden oluşturun. Doğru bir şekilde anladım mı?

WARN c.z.hikari.proxy.ConnectionProxy - Connection [email protected] <POOL_NAME> marked as broken because of SQLSTATE(08003), ErrorCode(17008). 
java.sql.SQLRecoverableException: Closed Connection 

bağlantı muhtemelen Oracle tarafından kapatılmış ve kullanılamaz:

gerçeği uygulamama boş döneminden sonra, ben (bir sonraki istek uppon) Aşağıdaki duruma bakın olmasıdır. Yukarıdaki yapılandırmayı kullanarak bunu engellemeye çalışacağım. Bir başka nokta, neden havuzdan kapalı bir bağlantı aldığımı anlamadığım. Hikari'nin dönmeden önce bağlantının durumunu test ettiği gibi bu asla olmamalı ...

Not: Ben DB'nin sahibi değilim, bunu yapılandıramıyorum veya gereksinimlerime göre yeniden yapılandırılmasına izin veremem. Ayrıca yapılandırmasına da erişemiyorum.

Bizim kurulum, JPA 2.1 API ile 4.3.7 Hazırda, Hikari 2.1.0

cevap

2

havuz parametreleri konusundaki düşünceleriniz Bahar 4.1.6 olduğunu doğrudur. Oracle örneğinin 10 dakikadan daha kısa bir boşta kalma zaman aşımı olması mümkündür. Yapabileceğiniz bir şey, com.zaxxer.hikari paketi için DEBUG seviyesinin kaydedilmesini etkinleştirmektir. HikariCP içinde dahili olarak neler olup bittiğini çok gürültülü olmadan çok daha fazla bilgi alacaksınız.

Günlüğü issue on Github olarak göndermekten çekinmeyin ve bir göz atalım.

+0

Tamam, yararlı günlükler alıp alamayacağımı göreceğim. Hikari bana kapalı bir bağlantı döndüren fikriniz nedir? Son JDBC Sürücüsünü kullanarak bir Oracle 11g üzerinde olduğum için, isValid() çalışmalıdır. Hibernate kapalı bağlantıda bir sorgu yürütmeye çalıştığında bu büyük güzel SQLException görüyorum. Bu yüzden havuzdan kesin bir bağlantı kurdum. –

+0

Oracle sürücüsünün JDBC4 isAlive() API'sini düzgün bir şekilde uyguladığından emin oldum, ancak bunun yerine bir connectionTestQuery yapılandırmayı deneyebilirsiniz. HikariCP, yapılandırılmışsa bunu kullanır. Not: Ayrıca Bahar ve/veya Hazırda Bekletme'nin oturumdaki Bağlantıları (bir şekilde) önbelleğe almadığından emin olun - muhtemelen bir ayar. – brettw

+0

Daha fazla bilgi aldım. Uygulama başlangıcında bir bağlantı sızıntımız olduğu anlaşılıyor. Kullanıcı etkileşiminden kaynaklanan ilk talepten önce bile. Bu yüzden bunu araştırmalıyız. Daha fazla bilgi aldığımda sizi daha fazla bilgilendireceğim. Hikari veri kaynağı istatistikleri günlüğe kaydetme sayesinde. :-) –

İlgili konular