Storie dalla Sala Macchine |
Home Page | Commenti | Articoli | Faq | Documenti | Ricerca | Archivio | Storie dalla Sala Macchine | Contribuire | Imposta lingua:en it | Login/Register
Intanto che sono qui che trasferisco un database da uno degli ennemila server di "test" (che sono tutti di test altrimenti bisognerebbe pagare le licenze) al "vero" database server, quello che fu comperato prima che io me ne andassi ed e' rimasto a prendere polvere nel rack fino a ieri l'altro quando l'ho acceso per la prima volta, arriva uno dei CL.
CL - Ehi, tu sei D?
IO - Ti devo dei soldi? Ho giurato di sposarti in un momento che ero ubriaco? Ho giurato di
sposare un tuo parente in un momento in cui ero ubriaco?
CL - (confuso) Huh?
IO - (ok, ci ha il processore a 1.6 Mhz) Lascia perdere... si sono io, che vuoi?
CL - Mi ha detto UL che tu potresti aiutarmi con un problema che ho con una applicazione.
UL e' sempre il genio, amante dei piani superdettagliati che si sta prodigando come irresponsabile IT.
IO - Ok, che problema hai?
CL - Allora, la mia applicazione strumpa e ridumpa, frulla e risfrulla ma la connessione
al database e' mortalmente lenta. Volevo vedere come potevamo ottimizzare il database.
IO - Sei sicuro che il problema sia nel database?
CL - E che altro potrebbe essere?
Mi trattengo dal rispondergli "la tua testa". No, non lo so come o perche'. Comunque, usciamo dalla Sala Macchine ed andiamo a vedere questo problema.
L'applicazione (ovviamente) e' solo sul suo lapdog, e non e' installata su uno dei server di "test". Nota per me: chiedere ad UL di compilare una lista completa ed esaustiva di tutte le applicazioni che girano sui server di test e quali server, cosi' magari riusciamo a spegnere qualcuno di questo ginepraio di pc-che-fingono-di-essere-server.
CL - Allora, io faccio cosi' cosa' cosu'... ecco, adesso fa la richiesta al database e si blocca.
Ed in effetti, si blocca.
IO - Ok, quale e' il database che stai usando?
CL - Ruzgublfulful.
IO - (guardandolo fisso) E dove accidenti sta?
CL - Qui (indicando il laptop).
Ovviamente. E che ti pareva?
IO - Bene. Adesso fammi un dump del db e lo spostiamo sul server, cosi' vediamo subito se e' un
problema di risorse della macchina oppure no.
CL - (confuso) Un dump?
IO - Si, un dump. Del database.
CL - E come si fa?
Rapida introduzione di CL alle magie di mysqldump, chiappa il dump (2 Mb), crea un db sul server, importa il dump, imposta i permessi.
IO - Adesso imposta la tua applicazione per usare il db sul server, questi sono i dati.
CL - Huhhh... Quello non e' tanto facile...
IO - Perche'?
CL - Perche'....
IO - Hai le stringhe di connessione hard-wired nel codice.
Ovviamente, e che mi aspettavo?
IO - E come pensi di spostare l'applicazione in produzione (se mai ci andra') o in testing
(se mai ci andra')?
CL - Mah... io pensavo che il db rimanesse sulla stessa macchina quindi...
IO - Pensavi male. Adesso cambiati il codice in modo da usare un'altro server. E se vuoi un
mio consiglio (che te lo do' lo stesso anche se non lo vuoi), rimuovi tutti i parametri che
sono hard-wired e falli leggere da un file di configurazione.
CL inizia il difficoltoso lavoro di modificare il suo codice, reso ancora piu' difficile dal fatto che, apparentemente, e' incapace di usare un editor di testo ed il concetto di "search & replace" gli e' ignoto. Dopo un po' lo mollo li' e me ne ritorno al tavolo di cui mi sono impossessato come "postazione di lavoro". Un paio di ore dopo CL e' di ritorno.
CL - Ok, dovrei essere a posto...
IO - "Dovresti" essere a posto? Non hai provato?
CL - E come faccio a provare?
IO - Che ne dici di spegnere il tuo db server e vedere se ti becchi un errore?
CL - Ah, be... si ma non credo che funzioni cosi'...
IO - Perche'...?
Perche' (sciocco io a non pensarci subito), non appena avvia quella chiavica di una applicazione si becca una spataffiata di errori. Ed il funzionamento "normale" della cosa e' un errore ogni 30 secondi. Come potrebbe percio' distinguere un errore da un "errore" ?
Comunque, lui ricomincia la giga ed io tengo un occhio sul db.
CL - Ecco, adesso si e' ribloccato? Vedi che e' il database?
IO - (indicando la console) Database un corno. Non sta facendo niente.
CL - Come non sta facendo niente? Ma guarda che e' bloccato... il database...
IO - Il database ti ha dato le informazioni in clicckety-click unopuntodue
secondi.
CL - Ma la query...
IO - La query e' fatta, finita, hasta lasagna. I dati sono da qualche parte nella
tua applicazione, cosa ne stai facendo lo sai solo tu. Ma il database non e'
il problema.
CL - Ma... i dati... la query...
Io a quel punto mi impossesso del lapdog e faccio un rapido controllo: il processore e' a palla al 100%. Un thread dump dell'applicazione mi dice che negli ultimi 2.5 minuti, il tempo usato dal Garbage Collector e' stato di 2 minuti e 28 secondi. Ergo, gli unici due secondo che l'applicazione ha 'girato' e' stato durante la query al database.
IO - Eccoti il tuo problema, la tua applicazione e' scritta con i piedi.
In effetti potrebbe essere scritta anche con altre parti del corpo, ma sicuramente nessuna che ha minimamente a che fare con il cervello.
CL - Ma... la query... il database...
E cosi' il muro si e' arricchito di un altro dei miei "cartelli":
Davide
14/12/2009 08:00
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.
aaaah..... Di Herr Franz postato il 14/12/2009 08:48
quel cartello Di Tommaso postato il 14/12/2009 09:10
Parole sante Di MaxFrames postato il 14/12/2009 09:17
brain dump Di Anonymous coward postato il 14/12/2009 09:30
@ Anonymous coward Di BlackKatMike postato il 14/12/2009 10:06
@ BlackKatMike Di ringo postato il 14/12/2009 10:19
Dovrebbe funzionare Di Kesty postato il 14/12/2009 10:25
@ Kesty Di Cymon postato il 16/12/2009 19:31
Ma... Di noob postato il 14/12/2009 11:16
@ noob Di Davide Bianchi postato il 14/12/2009 11:19
cartellonistica Di Thesadsysadmin postato il 14/12/2009 12:03
Commento Di Piernicola Comuniello postato il 20/12/2009 11:28
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".