Tales from the Machine Room


Home Page | Comments | Articles | Faq | Documents | Search | Archive | Tales from the Machine Room | Contribute | Login/Register

Fly Me To The Moon

Ritorniamo a parlare del famosissimo CMS rubato prodotto da $figliillegittimiecceteraeccetera di cui avevo parlato un po' di tempo fa'.

Dopo un burrascoso inizio, pareva che SL1/SL2 avessero finalmente contattato chi il cms lo ha scritto e stessero "verificando" il perche' ed il percome delle cose e della abominevole lentezza. Erano anche riusciti a fornire un "manuale" (le cui pagine iniziali e finali erano stranamente mancanti... forse perche' su tali pagine appariva in chiare lettere il nome di chi il CMS in effetti lo produce?) in cui venivano riportati i vari parametri di configurazione. Riportati, non spiegati badaben.

Comunque, SL (quello di $branco) aveva lasciato capire che preferiva che IO dessi un'occhiata alla cosa, in modo completamente indipendentemente.

Dopo un po' di ravanamenti ed una rapida rinfrescata alla mia memoria sul come debuggare applicazioni in Java, ho notato un certo trend sospetto. L'applicazione utilizza (ovviamente) un sistema di connection pooling per parlare con il suo database. Database che in effetti e' diviso in 4, in quanto uno e' quello contenente i dati del sito, uno e' quello contenente i parametri di configurazione, uno contiene gli utenti ed il quarto non si capisce bene che dovrebbe fare.

Perche' 4 e non uno solo? Non lo so.

Comunque, l'applicazione e' configurata in modo da avere un totale di 10 connessioni sempre attive con un massimo di 20 connessioni. Apparentemente tra le 10 e le 11 e tra le 13 e le 14, orari che, maguardaunpo', corrispondono ai momenti in cui il sito e' piu' usato, le connessioni arrivano a tappo ed il "tempo di attesa" per ottenere una nuova connessione oscilla tra i 20 ed i 40 secondi.

Ora, forse io sono un po' semplicistico, ma qualche cosa mi dice che 20 connessioni sono troppo poche, e magari qualche cosa per sveltire le operazioni potrebbe essere fatto semplicemente aumentando il numero di connessioni disponibili e magari cercando di capire perche' l'applicazione ci mette 40 secondi per ottenere una nuova connessione?

Dopo un altro po' di ravanamenti scovo dove accidenti questo coso genera i suoi log e noto un bel log che cresce come un maiale alla fiera annuale della carota gigante. Ogni 20~30 secondi circa una linea come

Error 500: java.lang.reflect.InvocationTargetException : Error opening socket to server x on port 50000 with message : null ConnectionCorrelator: nullDSRA0010E: SQL State = null, Error Code = -4,499DSRA0010E: SQL State = null, Error Code = -4,499

viene inserita nel log. Due linee al minuto... Non so voi, ma a me questo mi puzza di baco nel codice.

IO - ...quindi questa roba appare ogni 30 secondi circa.
SL1 - Hummm... interessante... ma non dovrebbe essere un problema.
IO - ...fammi capi', tu hai una applicazione che ogni 30 secondi ti sbatte un messaggio che inizia con "ERROR" in un file di log e sostieni che non dovrebbe essere un problema? Sopratutto quando tale applicazione e' lenta come la fame?
SL1 - Ma l'applicazione funziona perfettamente, quindi non dovrebbe essere un problema.
IO - Tu non hai la piu' pallida idea di che roba signfica sta' cosa eh?
SL - Vabbe', ma comunque, che cosa si potrebbe fare per risolvere il problema di lentezza?
IO - Quello che penso io, ma ovviamente non sapendo come l'applicazione funziona e' un po' un tiro al buio, e' che quando tutte le connessioni al database sono in uso i vari processi aspettano che una delle connessioni ritorni disponibile e continuano ad aspettare in coda finche' non va' in timeout. Dato che SL1 qui' dice che l'avere un messaggio di "Error" ogni 30 secondi non e' un problema si potrebbe per prima cosa ridurre il quantitativo di roba scritto nel log e per seconda cosa l'aumentare il numero di connessioni presenti nel pool. Al momento sono 10/20 proviamo a portarlo a 20/40.
SL1 - Huuu... Be', si' questo e' fattibile... Pero'...
IO - Il driver che usate e' shareware e 10/20 sono il numero massimo senza dover comperare il driver ufficiale, vero?

Ed il che spiega anche il motivo per i 4 databases: il driver shareware supporta solo 4 connessioni per database.

Dopo un paio di giorni SL1 ha comunicato che i "suoi" sviluppatori stavano lavorando sul problema ed avevano deciso di aumentare il livello di loggin in modo da avere una migliore comprensione del problema.

Ora, magari io sono solo un vecchiaccio cinico (coro: lo sei, lo sei), pero' mi sembra un po' strano che dopo che qualcuno ti segnala che la tua applicazione logga un errore ogni 30 secondi tu ti metti a fare debugging, quando per 2 mesi tutti si sono lamentati che l'applicazione e' lenta come la fame. Comunque, questi fantomatici "programmatori" dovrebbero produrre una applicazione di debugging "e con alcuni bugfix" nei prossimi giorni, cosi' magari riusciamo ad ottenere delle migliori performances senza dover acquistare il driver per il database a pagamento...

E magari io posso farmi spuntare un paio di ali dal culo e volare sulla luna.

Davide
30/08/2010 08:02

Previous Next

Comments are added when and more important if I have the time to review them and after removing Spam, Crap, Phishing and the like. So don't hold your breath. And if your comment doesn't appear, is probably becuase it wasn't worth it.

17 messages this document does not accept new posts
Anonymous cowbell By Anonymous cowbell - posted 30/08/2010 08:55

Per curiosità, che rapporto di costo c'è tra il CMS e il driver? 1000:1 o qualcosa del genere?

--
Anonymous cowbell


Davide Bianchi@ Anonymous cowbell By Davide Bianchi - posted 30/08/2010 09:15

 

Per curiosità, che rapporto di costo c'è tra il CMS e il driver? 1000:1 o qualcosa del genere?

 

Si', qualche cosa del genere...

--
Davide Bianchi


TheDoc@ Davide Bianchi By TheDoc - posted 30/08/2010 12:37

>>Per curiosità, che rapporto di costo c'è tra il CMS e il driver? 1000:1 o qualcosa del genere?

>Si', qualche cosa del genere...

Accidenti, pensavo che ste cose accadessero solo in Italia... L'ennesima dimostrazione che ci sono molti che fanno le cose senza pensare prendendo la strada piu' facile al momento (il costo in termini di giorni-uomo e di immagine per aver scelto la soluzione "facile" dei driver shareware non posso pensare che sia inferiore a quello dei driver "a pagamento"....).

AP

--
TheDoc


robibo By robibo - posted 30/08/2010 09:17

I paguri perdono il pelo ma non il vizio, a quanto pare.

ciao D, buona settimana!

--
robibo


Daniele C. By Daniele C. - posted 30/08/2010 09:54

Scusa D.

 

CORO:

LO SEI, LO SEI, LO SEI!!!!

--
"I was watching the London Marathon and saw one runner dressed as a chicken and another runner dressed as an egg. I thought: 'This could be interesting.'" -Paddy Lennox
---
D.


BudSpencer By BudSpencer - posted 30/08/2010 10:22

Ma c'è ancora in giro qualcuno che fa le cose per bene?

No, vero?

Non gliene frega più un belino a nessuno di produrre soluzioni che funzionino.

--
BudSpencer


Davide Bianchi@ BudSpencer By Davide Bianchi - posted 30/08/2010 10:32

 

Ma c'è ancora in giro qualcuno che fa le cose per bene?

No, vero?

 

Lasciami le mie illusioni per cortesia.

 

--
Davide Bianchi


Daniele C.@ Davide Bianchi By Daniele C. - posted 30/08/2010 10:53

Lasciami le mie illusioni per cortesia.

 

Beh, si potrebbe argomentare che tutti fanno le cose per bene, almeno dal loro punto di vista. Ho notato che quello che io indico come "fare lo cose per bene" non è sempre quello che la mia collega o il mio capo indicherebbero.

Credo che la differenza tra un professionista e un utOnto sia il fatto che quando uno ti dice "No, le cose per bene si fanno così", tu non chiudi le orecchie ed il cervello, ma ascolti quello che ha da dire, valuti se in quello che dice l'altro c'è del buono ed accetti i suggerimenti che migliorano il tuo modo di fare.

Ma, ovviamente, con la maggior parte delle persone i suggerimenti vanno diretti in /dev/null, o forse sono solo io che sono giovane e stupido a credere che gli altri ti ascoltino.

--
"I was watching the London Marathon and saw one runner dressed as a chicken and another runner dressed as an egg. I thought: 'This could be interesting.'" -Paddy Lennox
---
D.


Camillo By Camillo - posted 30/08/2010 11:02

Vedrai, spitteranno il CMS su due VM, con altre due VM con sopra meta DBMS ciascuno, a sua volta con tanti database, uno per tabella, a singola colonna ovviamente, cosi potranno avere millemila copie shareware del driver castrato...

--
Camillo


Anonymous coward@ Camillo By Anonymous coward - posted 30/08/2010 12:47

>Vedrai, spitteranno il CMS su due VM, con altre due VM con sopra meta DBMS ciascuno, a >sua volta con tanti database, uno per tabella, a singola colonna ovviamente, cosi potranno >avere millemila copie shareware del driver castrato...



Profeta! Pur di non pagare (quanto, 200Euro?) per il driver...

--
Anonymous coward


blackpingus@ Anonymous coward By blackpingus - posted 30/08/2010 13:53

Profeta! Pur di non pagare (quanto, 200Euro?) per il driver...

Ma la cosa che mi suona strana è: che db usano per dover usare un driver "shareware"? Mai avuto l'occasione di doverne usare uno che non sia oracle/postgresql/mysql/mssql/db2...

-- blackpingus


Davide Bianchi@ blackpingus By Davide Bianchi - posted 30/08/2010 15:38

Ma la cosa che mi suona strana è: che db usano per dover usare un driver "shareware"? Mai avuto l'occasione di doverne usare uno che non sia oracle/postgresql/mysql/mssql/db2...



Adesso non mi ricordo che roba era o perche' lo usassero, il db era SQL Server in ogni caso.

--
Davide Bianchi


Adriano@ Camillo By Adriano - posted 30/08/2010 14:18

>Vedrai, spitteranno il CMS su due VM, con altre due VM con sopra meta DBMS ciascuno, a sua volta con tanti database, uno per tabella, a singola colonna ovviamente, cosi potranno avere millemila copie shareware del driver castrato...

 

Non millemila, perchè dovranno usare un limite arbitrario per non pagare la licenza del VM manager. Ho capito male?

--
Saludos
Adriano


Camillo@ Adriano By Camillo - posted 30/08/2010 23:26

> Non millemila, perchè dovranno usare un limite arbitrario per non pagare la licenza del VM manager. Ho capito male?

tzeh, mai fatto girare una vm dentro una vm, eh? pivello! questo e oltre per superare lo shareware!

--
Camillo


Anonymous coward By Anonymous coward - posted 31/08/2010 00:23

luogo: ufficio DB

Personaggi: DB, BigD, SL1 SL2



IN UN MONDO PERFETTO

bigD: .... e quindi il soft e' una chiavica.

BD: (guardando SL1 e SL2 che sudano copiosamente apre l'interfono e ) Signorina, chiami le guardie, faccia scortare SL1 e SL2 ai cancelli, faccia liberare i cani e dia ordine di spararli (a SL1 e SL2, non hai cani) a vista se si avvicinano a meno di 5 metri dalla cancellata. Poi avvisi l'ufficio legale di interrompere il contratto e di avviare una causa penale contro questi signori. Bravo BigD, ottima segnalazione, ci hai fatto risparmiere tempo e denaro, me ne ricordero' a fine mese.

NEL MONDO REALE

BigD: .... e quindi il software e’ una chiavica

BD: (sudando copiosamente mentre guarda SL1 e SL2 freschi come rose ed imperturbabili come due statue di budda) No, scusatelo, non voleva dire quello che ha detto, provvedero’.... puniro’..... lo mettero’ a risolvere gratuitamente il vostro software, lavoreremo per voi.... non abbandonateci, vi prego (qui si mette a piangere come un bimbo)

--
Anonymous coward


Mauro Pietrobelli@ Anonymous coward By Mauro Pietrobelli - posted 02/09/2010 08:14

<NEL MONDO REALE

BigD: .... e quindi il software e’ una chiavica

BD: (sudando copiosamente mentre guarda SL1 e SL2 freschi come rose ed imperturbabili come due statue di budda) No, scusatelo, non voleva dire quello che ha detto, provvedero’.... puniro’..... lo mettero’ a risolvere gratuitamente il vostro software, lavoreremo per voi.... non abbandonateci, vi prego (qui si mette a piangere come un bimbo)>

Sei un menagramo ma ahinoi è proprio così......

--
Mamo


filippo By filippo - posted 03/09/2010 10:08

Sei un menagramo ma ahinoi è proprio così......

Ma no sei tu che come me sei coglione (senza offesa) cioè ti aspetti che prima o poi qualcuno capisca. Dovevi dire come faccio da un po' di tempo, non c'è problema, per voi va bene che il programma restituisca errore ok allora è perfetto così.

Se io dico A rava fava e voi capite solo ultima riga in fondo $(cifretta)= troppo.

Non vi potete lamentare che il software faccia schifo o non faccia ciò per cui è stato (se come no) progettato.

Tra un po' sarò il capo di me stesso, non che io non faccia cavolate (o peggio) ma almeno se dico a faccio cappellate saprò chi è il colpevole senza essere sempre il capro espiatorio.

Con questa ci faccio un cartello all'ingresso dell'ufficio:

Credo che la differenza tra un professionista e un utOnto sia il fatto che quando uno ti dice "No, le cose per bene si fanno così", tu non chiudi le orecchie ed il cervello, ma ascolti quello che ha da dire, valuti se in quello che dice l'altro c'è del buono ed accetti i suggerimenti che migliorano il tuo modo di fare.

--
Un colpo di fulmine tra noi ha preso te ...
Da me che vuoi ?


17 messages this document does not accept new posts

Previous Next


This site is made by me with blood, sweat and gunpowder, if you want to republish or redistribute any part of it, please drop me (or the author of the article if is not me) a mail.


This site was composed with VIM, now is composed with VIM and the (in)famous CMS FdT.

This site isn't optimized for vision with any specific browser, nor it requires special fonts or resolution.
You're free to see it as you wish.

Web Interoperability Pleadge Support This Project
Powered By Gojira