Storie dalla Sala Macchine |
Home Page | Commenti | Articoli | Faq | Documenti | Ricerca | Archivio | Storie dalla Sala Macchine | Contribuire | Imposta lingua:en it | Login/Register
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
I commenti sono aggiunti quando e soprattutto se ho il tempo di guardarli e dopo aver eliminato le cagate, spam, tentativi di phishing et similia. Quindi non trattenete il respiro.
Di Anonymous cowbell postato il 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
@ Anonymous cowbell Di Davide Bianchi postato il 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
@ Davide Bianchi Di TheDoc postato il 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
Di robibo postato il 30/08/2010 09:17
I paguri perdono il pelo ma non il vizio, a quanto pare.
ciao D, buona settimana!
-- robibo
Di Daniele C. postato il 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
Di BudSpencer postato il 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
@ BudSpencer Di Davide Bianchi postato il 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
@ Davide Bianchi Di Daniele C. postato il 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
Di Camillo postato il 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
@ Camillo Di Anonymous coward postato il 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 Di blackpingus postato il 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
@ blackpingus Di Davide Bianchi postato il 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.
@ Camillo Di Adriano postato il 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 Di Camillo postato il 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
Di Anonymous coward postato il 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 Di Mauro Pietrobelli postato il 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
Di filippo postato il 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 ...
Il presente sito e' frutto del sudore della mia fronte (e delle mie dita), se siete interessati a ripubblicare uno degli articoli, documenti o qualunque altra cosa presente in questo sito per cortesia datemene comunicazione (o all'autore dell'articolo se non sono io), cosi' il giorno che faccio delle aggiunte potro' avvisarvi e magari mandarvi il testo aggiornato.
Questo sito era composto con VIM, ora e' composto con VIM ed il famosissimo CMS FdT.
Questo sito non e' ottimizzato per la visione con nessun browser particolare, ne' richiede l'uso di font particolari o risoluzioni speciali. Siete liberi di vederlo come vi pare e piace, o come disse qualcuno: "Finalmente uno dei POCHI siti che ancora funzionano con IE5 dentro Windows 3.1".