Jump to content
php.lv forumi

Java aplikācijas gļuki, domājams, konekcijās ar Oracle DB


Recommended Posts

Sveiki biedri!

 

Esmu pilnīgi zaļš iekš tās Javas un Orākula, bet nu ir tā, ka nācās pārņemt vienu sistēmu/aplikāciju. Jāuztur un tagad arī jāatrisina viens gļuks. Centīšos pēc iespējas saprotamāk un skaidrāk/īsāk. Ir aizdoma, ka ir problēmas ar DB konekcijām.

 

serveris1 - stāv veca sistēma, ar vecu Tomcatu utt. Oracle DB atrodas fiziski citur (katrā ziņā ne uz tā paša PC vai tajā pašā telpā). Šis serveris griežās jau gadiem ilgi. Virsū aplikācija, lietotāju konti glabājas DB, visa informācija tiek ievietota un glabāta uz DB. 

serveris2 - tikko fresh apinstalēta sistēma ar jauno Tomcatu utt. Uz šī uzlikta aplikācijas kopija no serveris1. Viss darbojas, viss griežas. 

 

Problēma - šorīt ejot uz serveris1 adresi, atver pirmo lapu, ievadu login, pass, tālāk loading un nekas nenotiek. Kā jau serveris2 ir fresh new, domāju mēģināšu no tā - tas pats! Restartēju abus serverus - aiziet! Ja serveris2 darbotos, un serveris1 darbotos tikai pēc restarta, būtu skaidrs, ka kaut kas dēļ servera/sistēmas, bet dīvaini ir tas, ka abi negriežās līdz netiek restartēti. 

 

Restartējot izveidojas jauna konekcija ar DB, kas teiksim nakts laikā un citreiz pa dienu zūd? Varbūt DB ir ierobežots konekciju daudzums, kas restartējot serverus resetojas un atkal viss darbojās? Kaut gan no jaunā serveris2 jau ir tikai viens konekcija no mana konta un viss. 

 

p.s. Pieminēšu gan, ka šis gļuks ir arī pa dienu, vidēji reizi dienā, katru dienu. Citreiz ir tā, ka esot iekšā sistēmā, verot vaļā kādu sadaļu (kur jāielādē dati no DB) - nekas nenotiek un jārestartē serveris! NETIEK restartērts ORACLE DB serveris, bet gan aplikāciju serveri. 

 

Kā pārbaudīt konekciju ar DB, ar ko testēt šo savstarpējo sadarbību? Varbūt kaut kur logfailos saglabājas šādas problēmas? 

Link to comment
Share on other sites

  • 2 weeks later...

Šī problēma ir veca, kā pasaule. Neredzot pašu kodu, es minēšu, ka programmētājs kodā tur atvērtu datubāzes pieslēgumu (connection) visu aplikācijas/klases darbības laiku. Viens no risinājumiem būtu sadot programmētājam pa nagiem, un ieteikt turpmāk izmantot connection pool'us. Man pēdējā laikā ļoti patīk HikariCP bibliotēka. Runā, ka esot ātrāka un stabilāka par Apache Commons DBCP.

 

Kā pārbaudīt manu teoriju? Norausti serverim tīklu - vai nu brutāli izrauj kabeli, vai uz mirkli atslēdz serveri no tīkla sava rūtera galā. Mēģini ielogoties, un pārbaudi, vai log failos rādās errori (tiem būtu jābūt redzamiem). Tad pieslēdz tīklu atpakaļ. Aplikācijai būtu jābūt spējīgai datubāzes konekciju atjaunot. Ja viņa nespēj, tad pārej pie došanas programmētājam pa nagiem daļas :)

Link to comment
Share on other sites

Palielināt heap size? Vienam failam arī padaudz errori attiecībā uz Duplicate local variable result. Īsti pat nezinu kā efektīvāk viņus salabot, tā lai nenobrūk puse sistēmas. :D

Link to comment
Share on other sites

Šī kļūda rodas, kad GC mēģina atbrīvot atmiņu un pavada 98% CPU laika to darot, bet negūstot nepieciešamos rezultātus. Parasti tas notiek tad, kad atmiņa ir pārpildīta un nav ko atbrīvot, lai kā GC censtos. Pēc kāda laiciņa viņš izmet šo exceptionu, lai nenotiktu bezjēdzīga programmas darbošanās.

Link to comment
Share on other sites

  • 4 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...