abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 06:00 | Komunita

Projekt Linux Counter (Wayback Machine) definitivně skončil. Linux Counter vznikl v roce 1993 a uživatelé Linuxu mohli sebe a své počítače do projektu registrovat. V roce 2011 byl Linux Counter převeden na novou doménu a kompletně přepsán. Nejenom na AbcLinuxu se ještě před deseti lety řešily žebříčky zemí dle počtu uživatelů Linuxu.

Ladislav Hagara | Komentářů: 0
dnes 01:33 | Nová verze

Společnost Purism informuje, že vývojové desky Librem 5 jsou již odesílány přispěvatelům. Telefony Librem 5 s PureOS respektující bezpečnost, svobodu a soukromí uživatelů by měly být odesílány v dubnu. Aktuálně je lze předobjednat za 599 dolarů. Po 7. lednu za 699 dolarů.

Ladislav Hagara | Komentářů: 0
dnes 00:11 | Nová verze

Byla vydána nová major verze 6.0 multiplatformního virtualizačního nástroje Oracle VM VirtualBox. Přehled novinek v Changelogu. Nově lze například virtuální počítač exportovat do infrastruktury Oracle Cloud.

Ladislav Hagara | Komentářů: 0
včera 17:11 | IT novinky

Společnost Wave Computing představila iniciativu MIPS Open. Architektura MIPS bude k dispozici jako open source.

Ladislav Hagara | Komentářů: 0
včera 16:11 | Nová verze

Pro vývojáře v programovacím jazyce Python: Krátce po vydání multiplatformního frameworku Qt ve verzi 5.12 bylo vydáno také Qt for Python 5.12. Knihovna pro vědecké výpočty v Pythonu SciPy (Wikipedie) byla po šesti měsících vývoje vydána v nové verzi 1.2.0.

Ladislav Hagara | Komentářů: 0
17.12. 22:33 | Zajímavý projekt

Na Humble Bundle byla spuštěna akce Humble Book Bundle: Hacking for the Holidays by No Starch Press. Za 1 dolar a více lze koupit 5 elektronických knih, za 8 dolarů a více lze koupit 10 elektronických knih a za 15 dolarů a více lze koupit 15 elektronických knih věnovaných počítačové bezpečnosti, penetračnímu testování, forenzní analýze nebo kryptografii od nakladatelství No Starch Press. Nákupem lze podpořit organizaci Electronic Frontier Foundation (EFF).

Ladislav Hagara | Komentářů: 0
17.12. 20:11 | Nová verze

Po devíti měsících od vydání verze 5.4 byla vydána verze 5.5 svobodného multiplatformního softwaru pro konverzi a zpracování digitálních fotografií primárně ve formátů RAW RawTherapee (Wikipedie). Nová verze RawTherapee je k dispozici také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.

Ladislav Hagara | Komentářů: 0
17.12. 15:44 | Upozornění

Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) vydal varování (pdf) před používáním softwaru i hardwaru společností Huawei Technologies Co., Ltd., a ZTE Corporation. Používání těchto prostředků představuje bezpečnostní hrozbu.

Ladislav Hagara | Komentářů: 51
17.12. 13:33 | Pozvánky

Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 159. brněnský sraz, který proběhne v pátek 21. prosince od 18:00 v restauraci Na blbým místě na adrese Pellicova 5b.

Ladislav Hagara | Komentářů: 1
17.12. 12:55 | Bezpečnostní upozornění

V relačním databázovém systému SQLite (Wikipedie) byla nalezena bezpečnostní chyba pojmenovaná Magellan. Chyba se týká také webových prohlížečů postavených na Chromiu podporujících WebSQL API (POC). Bezpečnostní chyba byla opravena v SQLite 3.26.0 a v Chromiu 71.0.3578.80.

Ladislav Hagara | Komentářů: 1
Chystáte se přejít na Wayland na „desktopu“?
 (25%)
 (9%)
 (11%)
 (31%)
 (25%)
Celkem 151 hlasů
 Komentářů: 19, poslední 14.12. 18:37
Rozcestník

Dotaz: Pře s vývojářem - java jdbc padá v produkci a jeho vývojovém prostředí nikoliv

8.10. 13:32 majales | skóre: 23 | blog: Majales
Pře s vývojářem - java jdbc padá v produkci a jeho vývojovém prostředí nikoliv
Přečteno: 1799×
Zdravím, řeším problém s padajícím jdbc spojením z tomcatu8 na ubuntu 16 na MS SQL 2012 server. Nejsem ajva programátor, ale systémový admin. Vývojář vyvinul a odzkoušel na svém vývojovém prostředí jednu komponentu systému, která však v produkčním prostředí nefunguje. Demonstroval názorně, že jemu vše funguje, a že svoji práci odvedl.

Jako systémový admin ovšem neumím najít orpověď na to proč to v produkční prostředí nefunguje. tedy funguje tak že po 5-15 requestech do DB vše skončí následující chybou:
10:23:43,757 WARN  ~ SQL Error: 0, SQLState: null
10:23:43,759 ERROR ~ An attempt by a client to checkout a Connection has timed out.
10:23:44,701 ERROR ~

@79fn991al
Internal Server Error (500)

Oops: PersistenceException
An unexpected error occured caused by exception PersistenceException: org.hibernate.exception.GenericJDBCException: Cannot open connection

play.exceptions.UnexpectedException: Unexpected Error
        at play.Invoker$Invocation.onException(Invoker.java:244)
        at play.Invoker$Invocation.run(Invoker.java:286)
        at play.server.ServletWrapper$ServletInvocation.run(ServletWrapper.java:548)
        at play.Invoker.invokeInThread(Invoker.java:68)
        at play.server.ServletWrapper.service(ServletWrapper.java:142)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Cannot open connection
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214)
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147)
        at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1224)
        at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:63)
        at play.db.jpa.JPAPlugin.startTx(JPAPlugin.java:350)
        at play.db.jpa.JPAPlugin.beforeInvocation(JPAPlugin.java:318)
        at play.plugins.PluginCollection.beforeInvocation(PluginCollection.java:428)
        at play.Invoker$Invocation.before(Invoker.java:217)
        at play.Invoker$Invocation.run(Invoker.java:277)
        ... 25 more
Caused by: org.hibernate.exception.GenericJDBCException: Cannot open connection
        at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
        at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
        at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
        at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160)
        at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81)
        at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473)
        at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:60)
        ... 30 more
Caused by: java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
        at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
        at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65)
        at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:71)
        at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
        ... 35 more
Caused by: com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResourcePool@e8d5b34 -- ti
meout at awaitAvailable()
        at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1317)
        at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557)
        at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477)
        ... 37 more
K otestování se používá bash smyčka s 20-30 voláními vůči aplikaci. Aplikace se připojuje do DB a ověřuje uživatele. V application.conf je v podstatě jen připojení do DB a driver
db.url=jdbc:sqlserver://aaaa.server-sql.local:1433;databaseName=firma;user=proxy;password=tajneheslo123;
db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
Nevíte kde by mohl být zakopaný pes?

Řešení dotazu:


Odpovědi

8.10. 14:18 NN
Rozbalit Rozbalit vše Re: Pře s vývojářem - java jdbc padá v produkci a jeho vývojovém prostředí nikoliv
Nema databaze omezeni na pocet spojeni, nebo nedrzi nova spojeni moc dlouho? Protoze podle hlasek se klient noveho spojeni nedocka ie .nelze se spojit z databazi:
An attempt by a client to checkout a Connection has timed out.
GenericJDBCException: Cannot open connection
TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResourcePool@e8d5b34
8.10. 14:26 dustin | skóre: 61 | blog: dustin
Rozbalit Rozbalit vše Re: Pře s vývojářem - java jdbc padá v produkci a jeho vývojovém prostředí nikoliv
Navážu na to - tazatel píše, že se program spouští opakovaně ve smyčce. Tedy vlastní program konexi pustí (skončil), ale dozví se to databáze? Nechybí v aplikaci explicitní uzavření konexe při jejím ukončení, které by to dalo DB vědět?

Někde v této oblasti (max. počet konexí, timeout pro automatické uzavření apod.) se bude lišit vývojové prostředí od produkce.
8.10. 14:53 majales | skóre: 23 | blog: Majales
Rozbalit Rozbalit vše Re: Pře s vývojářem - java jdbc padá v produkci a jeho vývojovém prostředí nikoliv
Pravdouje že počet konexí by mohl hrát roli, i když počet konexí je MS SQL nastaven na 0 čili neomezený. I když po tom pádu tam zůstává viset 30 konexí javy do DB.. možná to je ten problém..
8.10. 15:58 majales | skóre: 23 | blog: Majales
Rozbalit Rozbalit vše Re: Pře s vývojářem - java jdbc padá v produkci a jeho vývojovém prostředí nikoliv
Tak jsem zvýšil connection pool na 60 a při testu se to zastavilo na 60 otevřených spojení do DB a pak to zase spadlo. Takže to asi neumí uvolňovat spojení do DB. Nebo jak to vlastně je? Uvolňuje se spojení a znovu navazuje, nebo se dělá reuse existujících spojení?
8.10. 18:40 debian+
Rozbalit Rozbalit vše Re: Pře s vývojářem - java jdbc padá v produkci a jeho vývojovém prostředí nikoliv
Co ak klient nezatvara spojenia po nacitani stranky? Nechava ich otvorene, tak potom ti skonci limit? ... este moze .... pripadne klient ma limit, kolko ma maximalne otvorenych spojeni
Řešení 1× (cronin)
9.10. 16:55 Lyco | skóre: 12 | blog: Lyco
Rozbalit Rozbalit vše Re: Pře s vývojářem - java jdbc padá v produkci a jeho vývojovém prostředí nikoliv
Pokud používáš connection pool, tak se spojení do DB nezavírají, ale když je aplikace "zavře", tak se vrátí do poolu a čekají tam na reuse.

Problém je pravděpodobně v tom, že aplikace spojení do poolu nevrací, a pool má omezenou kapacitu, takže časem dojdou. Ve vývojovém prostředí to funguje, protože je pool jinak nastavený (možná se vůbec nepoužívá), nebo se nedělá dost dotazů aby se vyčerpal.

Vývojář musí spojení správně zavírat (nebo jinak vracet do poolu, závisí na knihovně a na aplikačním serveru), když už je nepotřebuje.

BTW to že se spojení nemusí navazovat znova, je hlavní smysl poolu; u některých DB (ehm Oracle ehm) je otevření nového spojení velmi pomalé. To že je velikost poolu omezená je taky užitečné: chyba v aplikaci pak nevyčerpá zdroje pro ostatní aplikace které používají tu samou DB.
Příspěvek se rázem stává až o 37,5 % pravdivější, je-li pod ním napsáno reálné jméno.
10.10. 09:35 Ivan
Rozbalit Rozbalit vše Re: Pře s vývojářem - java jdbc padá v produkci a jeho vývojovém prostředí nikoliv
Souhlasim, kdyby byla chyba v databazi anebo v infrastrukture, tak by se nekde ve stacktrace objevilo slovo "microsoft" a bylo by jasne, ze chybu reportoval JDBC driver.

Na druhou stranu ovsem moc nechapu jak se to mohlo stat protoze v hibernate obycene nepracujete s JDBC konexi primo a navraceni konexe do poolu se stara sam framework. A i kdyby program pracoval primo s JDBC konexi, tak Java uz davno obsahuje konstrukt try-with-resources.

rADOn avatar 10.10. 16:57 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Pře s vývojářem - java jdbc padá v produkci a jeho vývojovém prostředí nikoliv
Dalsi pricina muze byt ze se connection pool naopak nepouziva (nebo pouziva blbe) a otevira se moc novych spojeni. Podivej se netstatem jestli nemas moc socketu ve stavu CLOSE_WAIT nebo TIME_WAIT.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
11.10. 11:50 OldFrog {Ondra Nemecek} | skóre: 30 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: Pře s vývojářem - java jdbc padá v produkci a jeho vývojovém prostředí nikoliv
Ať vývojář sdělí, jak to spojení do db v Hibernate vlastně nastavuje. Vývojář práci odvedl, ale tohle bude muset opravit nebo pomoct se správným nastavením na produkci (poskytnout dokumentaci).

Adminovi by měl sdělit požadavky na nastavení aplikace. Nevím, odkud pochází application.conf, ale často se nastavuje connection pool jako datasource přímo v contextu aplikace - pomocí elementu Resource (např. conf/Catalina/vhost/ROOT.xml). Tam je uvedena i velikost poolu apod. Aplikace pak ten datasource jen použije. To, co je uvedeno v application.conf ve mě vyvolává dojem, že se pracuje přímo s jdbc spojením? Použil bych radší pool a zkontrolovat limit na počet konexí nastavený v databázi a v connection poolu.
-- OldFrog
11.10. 23:00 majales | skóre: 23 | blog: Majales
Rozbalit Rozbalit vše Re: Pře s vývojářem - java jdbc padá v produkci a jeho vývojovém prostředí nikoliv
Nevím, čím by to mohlo být.. A nemám čas to zkoumat .. nastavil jsem tohle:

https://docs.vmware.com/en/VMware-vSphere/6.5/com.vmware.vsphere.install.doc/GUID-B15AB8CF-A123-482D-8988-F73A836EE4A7.html

A vývojáři připravil fungl novou a čistou virtuálku, kam si sám nainstaloval Javu, Tomcat a deploynul aplikaci. Výsledek jem že už to funguje i na produkci..
Max avatar 12.10. 00:02 Max | skóre: 66 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Pře s vývojářem - java jdbc padá v produkci a jeho vývojovém prostředí nikoliv
Já bych třeba osobně neměl klidné spaní. Nemám rád řešení formou přeinstalace. Důvod je prostý, může se podobný problém objevit znovu, v produkci, v době, kdy už to bude rozjeté a nebude prostor pro odstávky apod.
Zdar Max
Měl jsem sen ... :(
12.10. 07:48 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Pře s vývojářem - java jdbc padá v produkci a jeho vývojovém prostředí nikoliv
Nevím, čím by to mohlo být.. A nemám čas to zkoumat ..
Takto to nefunguje. Ak je aplikácia napísaná zle, je napísaná zle, a po čase vyčerpá spojenia bez ohľadu na limity a pod.

Je také ťažké dať aplikáciu zrevidovať inému vývojárovi? Ak dopredu vedia, aký typ problému hľadajú, malo by to byť relatívne ľahké a rýchle.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.