JaarMedlem sedan juli 2001434 inlägg
Har en äldre websida som har lite problem med JDBCn
Det är en webbapplikation som körs under Tomcat och en Oracle databas som anropas med Oracles jdbc-filer.
Det kan ta upp emot 5 sekunder att koppla upp sig till databasen vilket är på tok för länge.
Om jag kopplar upp mig med SQL+ (oracle sql-program) så går det blixsnabbt.
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
conn = DriverManager.getConnection("jdbc:oracle:thin:@xxx.xxx.xx.xx:1521:MYTNSDB", "user", "pass");
Sidorna går fort när jag kör det lokalt mot en utvecklings-databas
Ligger problemet i TomCat?! (Kör version 5.5) Finns det något bra sätt att optimera så att det inte tar sådan tid att koppla upp..
Tidsmätningen har gjorts genom att skriva ut tiden innan och efter uppkopplingen skapades.
LimeMedlem sedan sep. 2001837 inlägg
Se http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-datasource-examples-howto.html
Det är bättre att använd sig av en connection pool istället för att sätta upp en ny connection varje gång man sak accessa databasen. Mot local går det ofta fort eftersom det är bara du som är där och det är samma ip-nummer så databasen struntar i att göra en del saker... T.ex. öppnar den SQL-server-driver som vi använder oss av en direktkontakt över COM med databasen om det är på samma dator och över socket om det är remote.
Genom att köra med en pool så spar man en jäkla massa tid med att sätta upp kopplingar.
M.h.a. denna länk http://confluence.atlassian.com/display/DOC/Deploy+against+an+Oracle+database så fick jag upp en databaslänk väldigt fort mot vår oracle-server så det ska funka.
En sida som startades och hämtade och skrev ut 1.000 poster tog i snitt 0.19 sekunder med pool och 1.65 utan pool.
JaarMedlem sedan juli 2001434 inlägg
Fixade till även detta projekt till connection pool (som jag har på nyare projekt).
Det är lite av ett härke det här projektet så jag hoppas jag fått till det nu :)
Ett problem dock! jag har ställt in den på att hålla min på 15 connections och max på 50. När jag kollar i databasen ser jag dock att det endast är 1 connection fast med många cursor. Skall det vara så? Är det det man ställer in?
Mitt problem är nämligen att om det inte besökt någon på lång tid så tar det en tid att skapa upp en ny connection. Det är som mitt problem skrivet ovan. Finns det en connection är det inga problem med prestanda nu.
Hur löser jag så att det inte behöver skapas upp en massa connection? Verkar ju bara vara cursor som skapas som sagt. Och en connection är tidsinställd på att gå ned efter en viss tid tror jag.
RGBMedlem sedan dec. 1999362 inlägg
Vild gissning iof men kanske följande länk kan vara till hjälp?
http://forum.java.sun.com/thread.jspa?messageID=3491747
JaarMedlem sedan juli 2001434 inlägg
Jag testade att sätta den paramtern, men såvida inte jdbc:n kör liknande kod i bakgrunden skall det nog inte spela så stor roll.
Jag fann dock ett par andra problem med den gamla skruttkoden som jag försökte åtgärda. Det är hemst att se ens tidigare jobb flera år senare... hujja :p
För tillfället fungerar det iaf bra... Hoppas det håller i sig bara ;)