Troubleshooting High I/O Wait in Linux

Linux has many tools available for troubleshooting some are easy to use, some are more advanced. I/O Wait is an issue that requires use of some of the more advanced tools as well as an advanced usage of some of the basic tools. The reason I/O Wait is difficult to troubleshoot is due to the fact that by default there are plenty of tools to tell you that your system is I/O bound, but not as many that can narrow the problem to a specific process or processes. Answering whether or not I/O is causing system slowness To identify whether I/O is causing system slowness you can use several commands but the easiest is the unix command top. # top top – 14:31:20 up 35 min, 4 users, load average: 2.25, 1.74, 1.68 Tasks: 71 total, 1 running, 70 sleeping, 0… Leggi tuttoTroubleshooting High I/O Wait in Linux

Deframmenta per ottimizzare le tabelle di MySQL

In MySQL, quando si eliminano record da una tabella, lo spazio è riassegnato automaticamente. E ‘come uno spazio vuoto e formando gli allegati nuovi vantaggio. Il problema è che se una tabella di eseguire molte operazioni di DELETE, lo spazio fisico del tavolo sarà sempre più frammentato e il rendimento è ridotto. Nel MyISAM e InnoDB, OPTIMIZE TABLE comando disponibile ad effettuare l’ottimizzazione su qualsiasi tabella che, tra l’altro, esegue una deframmentazione automatica del tavolo. Si consiglia vivamente di utilizzare questo comando regolarmente in particolare su tabelle che sono più le dichiarazioni di smaltimento dei record. Per precauzione, di tenere presente che durante l’esecuzione, naturalmente, la tabella è bloccato. Si deve ricordare quando si sta per l’utilizzo con tabelle di grandi dimensioni e occupato. La sintassi è la seguente: OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE mi_tabla1 [, mi_tabla2] …; Per fare un tavolo di ottimizzazione frammentati possono essere selezionati per avere spazio libero, probabilmente… Leggi tuttoDeframmenta per ottimizzare le tabelle di MySQL

Mysqldump per prendere solo lo schema di una tabella

Mysqldump è uno strumento che viene utilizzato per creare copie di backup (o dump) dei database, incusi dati struttura e schemi. Ci sono una serie di switch (flags) da riga di comando che si possono lanciare per scaricare solo i dati o solo la struttura invece di tutto. Dump della struttura del database per tutte le tabelle senza dati Aggiungere il flag -d per indicare che nessun dato deve essere incluso nell’output. Il seguente comando dump della struttura della tabella per tutte le tabelle nel database specificato MySQL: mysqldump -d -u -p someuser miodatabase Il flag-d dice di non inserire i dati nel dump. In alternativa si può usare –no-data che è più semplice da ricordare. mysqldump –no-data -u  -p someuser miodatabase Dump della struttura del database per una sola tabella senza dati Esempio per una tabella mysqldump-d-u-p someuser miodatabase prodotti Pratiche di… Leggi tuttoMysqldump per prendere solo lo schema di una tabella

Creazione instanza mysql parallela

… ovvero come faccio ad avere due instanze indipendenti di mysql sullo stesso server ? Attenzione : Questo how-to è stato scritto e pensato per Ubuntu/Debian in particolare, alcuni path e directory potrebbero essere differenti nella vostra versione di Linux 1. Creo directory e predispongo i file di log mkdir /var/lib/mysql2 chown −R mysql.mysql /var/lib/mysql2/ mkdir /var/log/mysql2 chown −R mysql.mysql /var/log/mysql2 2. Creo una nuova configurazione di mysql cp -R /etc/mysql/ /etc/mysql2 A questo punto dobbiamo modificare il file di configurazione di mysql e cambiare la porta, socket e pid :  cd /etc/mysql2/ sed −i ‘s/3306/3307/g’ my.cnf sed −i ‘s/mysqld.sock/mysqld2.sock/g’ my.cnf sed −i ‘s/mysqld.pid/mysqld2.pid/g’ my.cnf sed −i ‘s/var\/lib\/mysql/var\/lib\/mysql2/g’ my.cnf sed −i ‘s/var\/log\/mysql/var\/log\/mysql2/g’ my.cnf 3. Inizializzazione e start Abbiamo a questo punto dell’how-to due scelte da fare : 1. creiamo una instanza vuota con database di default come se fosse una nuova… Leggi tuttoCreazione instanza mysql parallela

Protezione [base] contro DOS

mod_evasive è un altro modulo di Apache in grado di aumentare la sicurezza del sistema proteggendoci da attacchi DOS e D-DOS sulla porta 80. Gli attacchi di tipo DOS e D-DOS (Denial of Services e Distributed Denial of Services) sono attacchi atti a rendere inaccessibili i sistemi a causa di un intenso traffico dati. Grazie a questo modulo, però, riusciamo a prevenire questo tipo di attacco quando viene rivolto ad Apache in quanto il modulo tiene traccia del numero di connessioni provenienti da un determinato IP e, in caso di superamento della soglia, interviene bloccandole. Per installare il modulo su Debian/Ubuntu è sufficiente lanciare il comando: apt-get install libapache2-mod-evasive Quindi creiamo la directory per i log: mkdir -p /var/log/apache2/evasive chown -R www-data:root /var/log/apache2/evasive Ora creiamo un file di configurazione per il modulo: /etc/apache2/conf.d/modevasive.conf <IfModule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 5 DOSSiteCount… Leggi tuttoProtezione [base] contro DOS

List tutti i vhost di apache

Ecco uno script perl/bash dove tiro fuori formattati bene tutti i vhost di apache : Modo più verboso : /usr/sbin/apache2ctl −S 2>&1 | perl −ne ‘m@.*port\s+([0−9]+)\s+\w+\s+(\S+)\s+\((.+):.*@ && do { print “$2:$1\n\t$3\n”; $root = qx{grep DocumentRoot $3}; $root =~ s/^\s+//; print “\t$root\n” };’ Modo meno verboso : #!/bin/bash apache2ctl −S 2>&1 | grep −v Syntax | perl −ne ‘m@.*port\s+([0−9]+)\s+\w+\s+(\S+)\s+\((.+):.*@ && do { print “$2:$1\n”;};’

Mysql Proxy

Vi è mai capitato di dover configurare un’applicazione in modo che in un’archiettura mysql master/slave scriva automaticamente sul master e legga dagli slave senza modificare l’applicativo ? Mysql-proxy è quello che fa per te ! MySQL Proxy è un programma che si interpone fra un client e un server MySQL, per consentire di effettuare operazioni sul traffico di dati, in maniera trasparente per l’utente. MySQL Proxy usa il protocollo client/server esteso di MySQL, introdotto con la versione 4.1. Pertanto, questa applicazione è compatibile con i server dalla versione 4.1 e superiore. MySQL Proxy è un’applicazione molto leggera (200 KB in compilazione dinamica, 1.5 MB in compilazione statica con le librerie), che è stata disegnata per interporsi fra un client e un server MySQL ed eseguire operazioni sui pacchetti inviati e ricevuti. Il programma ha poche opzioni di configurazione. La caratteristica che lo rende interessante e funzionale è un interprete Lua integrato, grazie al quale… Leggi tuttoMysql Proxy

Bash script cambio password

Personalmente me lo sono scrittp per cabiare qualcosa come 54 password ftp. Non volendolo fare a mano sono ricorso al solito bash Gli utenti nei sistemi Linux sono contenuti in questo file  /etc/passwd e si presentano in questo modo : test.it:x:526:526:test.it:/home/test.it:/bin/sh Per prima cosa elimino tutto quello che non mi serve : awk -F”:” ‘{ print $1 }’ /etc/passwd > user.txt ed ottengo quindi solo lo user : test.it A questo punto ecco che entra in azione lo script vero e proprio : #!/bin/bash function randpass { echo `</dev/urandom tr -dc A-Za-z0-9 | head -c8` } for i in `more ftp_ok` do p=`randpass` echo $i $p echo $p | passwd –stdin $i done Il gioco è fatto !  

Allineare mysql slave

Cosa succede se si fa una bella insert sul nostro database mysql slave? Due cose : Lo slave server si disallinea Il sistemista bestemmia  Per controllore lo stato dello slave bisogna lanciare dallo slave : mysql> show slave status\G  Lo Slave utilizza piu’ thread. Il primo e’ una connessione remota al Master ed ha il compito di raccogliere i dati dal bin-log (BinLog Dump) ed e’ sempre attivo. Gli altri thread sono locali ed hanno il compito di ricevere il contenuto del bin-log (Slave I/O) e di applicarlo alla base dati (Slave SQL). In caso d’errore nell’inserimento dei dati il thread Slave SQL si interrompe mentre lo Slave I/O continua a raccogliere i dati dal Master. Con show slave status\G si ottiene l’indicazione dell’errore occorso; una volta corretto il problema la replicazione riprende dal punto in cui si era interrotta applicando il… Leggi tuttoAllineare mysql slave