Ricerca in FOLBlog

[SdSM] Check Your Sh1t!

 Scritto da alle 13:59 del 23/12/2009  Aggiungi commenti
Dic 232009
 
closeQuesto articolo è stato pubblicato 7 anni 11 mesi 2 giorni giorni fa quindi alcuni contenuti o informazioni presenti in esso potrebbero non essere più validi. Questo sito non è responsabile per eventuali errori causati da questo problema.

E sono di nuovo da $brancodipaguri! Aaahhhh. Quanto tempo! Quasi un mese. Ed io che cominciavo a sperare che… vabbe’.

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":

Check your shit
Before complaining with me
be sure
that your stuff works as intended.

Davide

legenda personaggi

Technorati Tags: Storie dalla Sala Macchine,humor

Articoli simili:

  • Facebook
  • Twitter
  • Delicious
  • StumbleUpon
  • Wikio
  • Reddit
  • Technorati
  • Segnalo
  • Live
  • Add to favorites
  • Email
  • RSS

 Lascia un commento

Puoi usare questi tag e attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(richiesto)

(richiesto)

Pinterest
EmailEmail
PrintPrint
%d blogger hanno fatto clic su Mi Piace per questo: