[mass killing] uccidere tutte le query bloccate nella processlist di mysql

Un lunedì mattina di concitazione; se rimangono tante query appese che possono condurre ad un deadlock meglio ucciderle.

Ecco come perpetrare il mass killing, in due passi.

 

Mass killing operation saves time. Do it in MySql itself:

Run these commands

mysql> select concat('KILL ',id,';') from information_schema.processlist
where info like '%___Pattern___%' and time > into outfile '/tmp/kkk.txt';

mysql> source /tmp/kkk.txt;

conto alla rovescia col computo del fuso orario

Per il derby di domenica si è steso un accurato media plan che verte su twitter: Inter e Milan che a colpi di cinguettii si rilanciano souvenir del derby.

Se twitter ti dice che un post è stato visualizzato 30.000 volte devi crederci, anche senza sapere con quale livello di coscienza o attenzione questo si sia verificato nella TimeLine di ogni utente.

Nel suo piccolo anche il sito dell’inter è cambiato:  alcuni sfondi in rotazione nella home page e soprattutto un conto alla rovescia che mostra quanto manca al fischio iniziale.

Adesso che siamo più internazionali, come fare in modo che il conto alla rovescia si adeguasse al fuso orario del browser di chi sta visualizzando la pagina? Le 20:45 in italia saranno le 15:45 a miami, e le 2:45 di lunedì mattina a Jakarta… quase tutte le soluzioni si basano sul computo lato client. Ma come calcolare a che ora inizierà  il derby in giro per il mondo?

ecco come ho risolto:

– Il browser all’atto di caricare la pagina calcola lo spiazzamento in minuti rispetto all’ora di Greenwich (UTC): d.getTimezoneOffset();
– calcolato questo numero, positivo o negativo, viene fatto un post ajax su uno script server per adeguare lo spiazzamento della data del derby rispetto alla timezone del visitatore. Il default sono le 19:45, uno a Londra non avrà  spiazzamento e per lui il conto alla rovescia è limitato dalla ora corrente verso le 19:45 della domenica.

(Utilizzando ajax si aggirano i rischi di una risposta server ‘precotta’ (cached) rimbalzata da varnish senza fare davvero il computo)

– genero un javascript che il server spara al client con la data e ora attualizzata con questa query mysql SELECT DATE_FORMAT(DATE_ADD(‘2014-11-23 19:45:00’, INTERVAL (SELECT -1* $offset) MINUTE),  ‘%M %d, %Y %T’) 

 

 

capture_20112014_173319

 

mymessaggio sconfortante

secondo me l’affidabilita‘ e, piu’ in generale il valore di una applicazione si definiscono dalla sua gestione degli errori e da come questa e’ documentata.

a maggior ragione ora in cui la memoria a breve, negli sviluppatori, e’ rimpiazzata da un massivo ricorso a google. Ecco perche’ messaggi bloccanti come questi mi intristiscono, davveto

Last_Errno: 1677
Last_Error: Column 1 of table 'archivio.tag' cannot be converted from type 'varchar(90)' to type 'varchar(90)'

per questo trovo poco divertente che discrepanze tra versioni di mysql master e quello slave partoriscano messaggi di errore cosi’ fuorvianti

la cosa significativa e’ che gli errori dai messaggi inquietanti fioccano come nespole, ma c’e’ sempre un sito che pullula di segnalazioni

Starting MySQL….. ERROR! The server quit without updating PID file

la casa che sembra un campo nomadi, un adulto che rimbrotta, un bambino ipercinetico e vociante che ti tampina.
E poi una mano per tenerli a bada, quella che aveva due dita rotte. Dall’altra un paio di server che fanno le bizze.
Uno con la memoria piena di processi apache2 zombie, l’altro con mysql che non si riavvia. Esistono diverse soluzioni, ma la piu’ semplice e piu’ lineare e’ questa:

basta trovare un file proprietario di mysql e killarlo 🙂

kill -9 `ps aux |grep mysql |awk ‘{print $2}’`

profondo rosso

A gennaio Oracle ha acquistato Sun, e quindi anche Mysql.

Oggi ho seguito, proprio nel palazzone della Sun alla periferia operaia di Milano, un seminario su Mysql 5.5.

due flash cromatici.
Nell’attraversare il quartiere Bicocca, murales che raccontano di fabbriche che chiudono, di dignita’ del lavoro, di sogni infranti, di operai a spasso. Niente che vedremo mai sul tg1.
La seconda, simbolo della seconda, la profusione di rosso-oracle che ora accompagna il logo di mysql.

avalanche effect

giulio cesareho ultimato il sistema di mailing per l’ufficio commerciale. Ora possono scegliere i destinatari da database oppure importarli come CSV, e l’applicazione crea istanze di mail, parsa i dati personali, mette dei codici univoci e crea degli oggetti di classe phpmailer.

insomma, al tipo arriva una mail con dentro “clicca qui per partecipare all’evento X oppure clicca qui se preferisci ricevere le brochure”. si tracciano i feedback in base a codici univoci MD5 creati mischiando elementi casuali e dati effettivi

interessante l’effetto valanga dell’algoritmo di crittazione

la i in +

quando una stored procedure MySql ritorna un recordset e non uno scalare su un tipico ambiente LAMP… e’ meglio assicurarsi di avere php5
mysqli semplifichera’ la comunicazione tra php 5 e mysql 5

con php 4/4.3 etc si e’ costretti a fare query consecutive nel contesto di una stessa connessione

controllo date jquery

il controllo di inserimento di una data e’ compattissimo, con jquery.

ogni input field di classe ‘date-pick’ ha l’evento change intercettato dalla funzione datePicker presente nel plug-in di jquery. Il method-chaining e’ terribile e portentoso; quasi sempre, poi, l’icona del calendario e il relativo stile del calendario e’ aggiunta via CSS. Per capire, meglio evitare il sito tradizionale.

$(function()
{
$('.date-pick').datePicker().val(new Date().asString()).trigger('change');
});