Tales from the Machine Room


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

Check Your Sh1t!

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
14/12/2009 08:00

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.

12 messages this document does not accept new posts
Herr Franzaaaah..... By Herr Franz - posted 14/12/2009 08:48
l'aria di casa...quel profumo di topo morto che si avverte solo nelle ditte in putrefazione...scommetto che ti è mancata!

--
Herr Franz


Tommasoquel cartello By Tommaso - posted 14/12/2009 09:10

vorrei tanto riciclarlo pure io, ma pare sia contrario all'integrity aziendale! :\(
Ma che è colpa mia se sono stupidi?
Non lo so, comunque sia non gli puoi dire che un paramecio e' piu' intelligente!!!

--
Il saggio coltiva Linux...
Tanto Windows si pianta da solo.


MaxFramesParole sante By MaxFrames - posted 14/12/2009 09:17

Mi sa che ti rubo l'idea.

--
I'll have to script my way outta here!


Anonymous cowardbrain dump By Anonymous coward - posted 14/12/2009 09:30

un dump del suo cervello porterebbe ad un risultato nullo

--
Anonymous coward


BlackKatMike@ Anonymous coward By BlackKatMike - posted 14/12/2009 10:06

> un dump del suo cervello porterebbe ad un risultato nullo

... O ad un errore durante il dump >:-) ?

--
BlackKatMike


ringo@ BlackKatMike By ringo - posted 14/12/2009 10:19

> > un dump del suo cervello porterebbe ad un risultato nullo
>
> ... O ad un errore durante il dump >:-) ?
>
Il problema sarebbe quello di riuscire ad individuare l'errore "Neurone non trovato" durante il dump nel log che visualizza la marea di errori del normale funzionamento del suo cervello.

--
ringo


KestyDovrebbe funzionare By Kesty - posted 14/12/2009 10:25

Da quand'è che il condizionale è una forma sbagliata in informatica ?

Forse sono io che sono particolarmente incapace, ma non sono mai cosė sicuro da dire: "Adesso funziona!" neanche dopo averla testata 10mila volte.

In informatica le cose, in teoria, dovrebbero funzionare. In pratica, invece, se sei fortunato.

--
Kesty


Cymon@ Kesty By Cymon - posted 16/12/2009 19:31

> Da quand'è che il condizionale è una forma sbagliata in informatica ?
>
> Forse sono io che sono particolarmente incapace, ma non sono mai cosė sicuro da dire: "Adesso funziona!" neanche dopo averla testata 10mila volte.

Concordo. Ma ancor più non direi mai "adesso funziona" se il mio codice spara un errore ogni trenta secondi come uso normale.

--
Cymon


noobMa... By noob - posted 14/12/2009 11:16

Una cosa che mi sto chiedendo da un po': come diavolo fa $brancodipaguri ad essere ancora in giro vista la "qualita'" media dei suoi prodotti? Hanno trovato dei polli ancora più fessi di loro da spennare oppure si sono dati agli schemi Ponzi?

--
noob


Davide Bianchi@ noob By Davide Bianchi - posted 14/12/2009 11:19

> Una cosa che mi sto chiedendo da un po': come diavolo fa $brancodipaguri ad essere ancora in giro

Le hai lette le FAQ si'?

--
Davide Bianchi


Thesadsysadmincartellonistica By Thesadsysadmin - posted 14/12/2009 12:03

"in questo ufficio forniamo supporto informatico.
per supporto di tipo encefalico rivolgersi altrove (provate con Dio)"

questo cartello campeggia sul mio muro :-\)

è sempre un piacere leggere questo sito!
:-)

--
Thesadsysadmin


Piernicola ComunielloCommento By Piernicola Comuniello - posted 20/12/2009 11:28

Non so se mi vien piu' da ridere o da piangere :-/

--
Piernicola Comuniello


12 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