- Home
- Categorie
- Coding e Sistemistica
- Hosting, Server e Domini
- Crash Mysql su VPS Tiscali dopo qualche secondo dal restarting
-
Crash Mysql su VPS Tiscali dopo qualche secondo dal restarting
Crash Mysql su VPS Tiscali dopo qualchesecondo dal restarting
Salve,
posto qui in quanto nonostante icontinui solleciti a Tiscali nel verificarne le cause, nonostantepago a Tiscali profumatamente circa 400 euro l'anno per il ServerDedicato, ad oggi continuano a fare orecchio da mercante evitando dirispondermi a qualsiasi contatto via e-mail e/o telefonico.Sono titolare di un Virtual PrivateServer di Tiscali con le seguenti caratteristiche:
-SO: Redhat Linux Fedora 9.0;
-RAM: 2 GB, con circa 1.5 GB liberi;
-Hard Disk: 20 GB, con circa 7 GB dispazio su disco occupato;
-MySql: versione 5.0.51;La configurazione del file my.cnf è laseguente:
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-lockingmax_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
thread_concurrency = 8server-id = 1
max_connections = 50
key_buffer = 32M
tmp_table_size = 64M
max_heap_table_size = 64M
query_cache_limit = 2Mft_min_word_len = 2
log=/var/log/mysqld.log
log-warnings=2log-error=/var/log/mysqld-err.log
long_query_time = 3
log-slow-queries=/var/log/mysqld-slow.logskip-bdb
skip-innodb
skip-ndbcluster[mysqldump]
quick
max_allowed_packet = 16M[mysql]
no-auto-rehash[isamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M[myisamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M[mysqlhotcopy]
interactive-timeoutDa circa un mese mi capita che MySqlcrasha in continuazione, in pratica riesce a stare in piedi perqualche secondo dal restart, e questo anche se i miei siti sono inmanutenzione(quindi non c'è alcun accesso al db), e se non effettuoalcuna comunicazione al db tramite client mysql. Crashando ho notatoche tutti i processi mysql scompaiono anche tra i processi del SO,che seguo tramite l'htop lanciato nella shell unix.
Alla fine, per capire meglio comeintervenire, ho provato a tenere in manutanzione i siti noneffettuando alcuna richiesta al database, a riavviare ilservizio(tenendo attivati tutti i log) ottenendo puntualmente ilcrash del database dopo circa 5 secondi.
Riporto di seguito quanto è statoscritto nei log.-mysqld-err.log:
120912 9:08:46 [Note]/usr/libexec/mysqld: ready for connections.
Version: '5.0.51a-log' socket:'/var/lib/mysql/mysql.sock' port: 3306 Source distribution-mysqld-slow.log:
/usr/libexec/mysqld, Version:5.0.51a-log (Source distribution). started with:
Tcp port: 3306 Unix socket:/var/lib/mysql/mysql.sock
Time Id Command Argument-mysqld.log:
120912 09:08:46 mysqld started
/usr/libexec/mysqld, Version:5.0.51a-log (Source distribution). started with:
Tcp port: 3306 Unix socket:/var/lib/mysql/mysql.sock
Time Id Command Argument
120912 9:08:47 1 Connect Access denied for user 'UNKNOWN_MYSQL_US'@'localhost' (usingpassword: YES)
120912 9:08:51 2 Connect root CHIOCCIOLA host6-76-DYNAMIC.2-79-r.retail.telecomitalia.it n
2 Query SET NAMES utf8
120912 9:08:52 2 Query SHOW GLOBAL STATUS
120912 9:08:53 2 Query SHOW INNODB STATUS
2 Query SHOW GLOBALSTATUS
120912 9:08:54 2 Query SHOW INNODB STATUS
120912 9:08:55 2 Query SHOW GLOBAL STATUS
120912 9:08:56 2 Query SHOW INNODB STATUS
120912 9:08:57 2 Query SHOW GLOBAL STATUS
120912 9:08:58 2 Query SHOW INNODB STATUS
120912 9:09:00 2 Query SHOW GLOBAL STATUS
2 Query SHOW INNODBSTATUS
120912 9:09:01 2 Query SHOW GLOBAL STATUSNell'ultimo log noto che c'è unaconnessione non autorizzata dall'esterno + una serie di ?ShowGlobal Status? e ?Show Innodb Status? che sicuramente noneseguo io da client. Devo dedurre che c'è qualcuno che riesce adentrare in continuazione nel mio db facendomelo crashare? E in questocaso come risolvo?
Dipende da un problema diconfigurazione del my.cnf?
Può essere corrotto il db, e quindiserve l'installazione di una nuova versione di MySql oppuresemplicemente la ricreazione di tutti i db?Qualcuno mi sa indicare a questo puntodov'è il problema?
Attendo al più presto riscontri avendotutti i siti bloccati.
Grazie e buona giornata.
-
Verifica se il dbms è accessibile anche dall'esterno del server. In questo caso puoi aggiungere bind-address=127.0.0.1 per renderlo accessibile solo da localhost.
Da quello che vedo, qualcuno sta cercando di creare un exploit per bucarti il db.
-
Ho provato a limitare l'accesso al mysql al 127.0.0.1 e non permettendo le
connessioni dall'esterno.Ora nel log scrive solo questo:
120912 14:45:06 mysqld started
/usr/libexec/mysqld, Version: 5.0.51a-log (Source distribution). started
with:
Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock
Time Id Command Argument
120912 14:45:07 1 Connect Access denied for user 'UNKNOWN_MYSQL_US' CHIOCCIOLA 'localhost' (using password: YES)Il tentativo di connessione c'è, però viene subito respinto.
Il problema è che il db crasha puntualmente dopo qualche secondo nonostante
non venga eseguita alcuna query sul db. Quindi deduco che il problema del
crash del db non dipenda dal tentativo di connessione esterno. Giusto?A questo punto cosa mi consigli di verificare a livello sistemistico?
Come anticipato parliamo di un VPS Tiscali, e tiscali non mi da alcuna
assistenza...devo sbrigarmela io, anche perchè ho il pieno controllo del
server dedicato.Fammi sapere non appena puoi, e ti ringrazio per la collaborazione.
-
Quella connessione però è dall'interno. Chi è che sta cercando di connettersi? E' uno script o c'è qualcos'altro?
Riguardo il crash, è difficile scoprirne il motivo. Quando crasha non scrive ovviamente nulla nei log e quindi la vera causa non viene esposta. L'unica cosa da fare è dare uno sguardo alla configurazione dell'intero server, cominciando con l'individuare chi è quel tizio che cerca di loggare come UNKNOWN_MYSQL_US' CHIOCCIOLA.
-
Esito deitest:
-ho impostato tutti i siti inmanutenzione, quindi nessun accesso al db da parte loro;
-ho impedito accessi al db dall'esternotramite parametri bind-adress e skip-network, quindi sul db nonlavora nessuno. La connect riportata in precedenza viene fatta didefault dal Mysql così come visto in altri log di mysql sql trovatiin rete. Le istruzioni “show status” riscontrate nei precedentilog erano appartenenti al Mysql Administrator avviato sulla miamacchina.
-ho modificato la porta di mysql,giusto per essere sicuro che se fosse “attaccato” sarebbe rimastosu durante il mio test;
-ho verificato che la porta del mysqlnon fosse occupata da qualche altro processo quando mysql nonrisultava più su tra i processi;
-ho eseguito il mysqlcheck e ilmyisamchk individuando e riparando alcune tabelle che risultavanocorrotte;
-ho provato ad eseguire “yum updateinstall”, nell'ottiva di aggiornare il mysql, però non mi è statotrovato nessun pacchetto da installare;
-ho installato e fatto girare rkhunteral fine di trovare eventuali rootkit, e non è stato trovato nulla dianomalo sul sistema;
-ho verificato nel file di firewall lapresenza di eventuali attacchi dall'esterno, esito negativo;Non sono riuscito a:
-scaricare/installare/configurare unanuova istanza Mysql parallela a quella già presente. Purtroppo nonho trovato alcuna documentazione online che spiega come installareuna seconda istanza sullo stesso sistema.
-verificare l'integrità del filesystemdella partizione su cui è installato il mysql in quanto ho notatoche, nonostante sia utente “root”, non posso eseguirel'istruzione “fdisk”...forse perchè parliamo comunque di unServer Virtuale.Dopo tutte le suddette prove ilrisultato è che:
-nei log di mysql non trovopuntualmente nulla di anomalo tranne che la traccia del restart deldb;
-da shell tramite “htop”(opzione“s”) vedo il processo mysql killare sempre dopo pochi secondi dalrestart. Tracciando lo stato del processo, dopo essere stato killatoleggo il seguente messaggio nella console di “htop”: “+++KILLED by SIGKILL +++”. Cosa vuol dire?Ciò che mi resta da provare al fine dirisolvere l'anomalia è:
-ricreare da zero i database,supponendo magari ci sia comunque qualcos'altro di corrotto. Puòessere?
-ripristinare il VPS alla situazioneiniziale(al momento dell'acquisto) accollandomi il costo diriconfigurare successivamente i siti web – database – cronjobattualmente disponibili. Ma prima di riconfigurare il tuttoverifecherò se il Mysql resterà su' per qualche oretta senza subirekill strani.
-mettere in conto di cambiare VPSmigrando da un concorrente di tiscali, la paura è ritrovarmi: conulteriori limitazioni su configurazione del VPS e stessi problemitecnici irrosilvibili visto che il servizio diassistenza(Telefonico-Email) PRATICAMENTE è inesistente.Che ne pensate? Posso provarequalcos'altro prima di eseguire gli ultimi 2 punti come ultimaspiaggia?
Fatemi sapere.
Grazie 1000.
-
E' decisamente curioso che l'utente root non possa eseguire fdisk. Prova ad eseguire fsck per fare un controllo sullo stato del filesystem.
A parte eventuali corruzioni del filesystem o dei database, non c'è rimasto nient'altro da controllare. A meno che non si ammetta che il dbms crasha normalmente, il che sarebbe stato notato da qualche centinaio di milioni di utenti di mysql
-
Premetto che proverò in serata l'fsck...
Ma cosa si potrebbe evincere leggendo il messaggio finale “+++KILLED by SIGKILL +++” nella console di “htop” tracciando l'esecuzione del processo Mysql con l'opzione "s"?
E' la conferma che il processo viene arrestato dal Sistema Operativo, quindi il mysql non crasha da solo?
-
C'è qualche processo che chiede la chiusura di mysql.
-
come faccio ad individuarlo?
devo capire/studiare come eseguire il debugging del processo mysql?
puoi darmi qualche dritta?
-
No, basta il tracing delle syscalls. C'è un programma apposito e si chiama strace.
-
Riporto diseguito il risultato dell'strace sul processo mysql, risultatoidentico ad ogni riavvio(quest'ultimo avviene tramite cronjobpuntualmente ogni minuto visto che il db cade dopo pochi secondidall'avvio):
getsockname(19, {sa_family=AF_FILE,path="/var/lib/mysql"}, [28]) = 0
fcntl64(19, F_SETFL, O_RDONLY) = 0
fcntl64(19, F_GETFL) = 0x2 (flags O_RDWR)
fcntl64(19, F_SETFL, O_RDWR|O_NONBLOCK)= 0
setsockopt(19, SOL_IP, IP_TOS, [8], 4) = -1 EOPNOTSUPP (Operation not supported)
futex(0x86e7024, FUTEX_WAKE_OP_PRIVATE,1, 1, 0x86e7020, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_EQ, 0}) = 1
select(6, [4 5], NULL, NULL, NULL) = 1 (in [5])
fcntl64(5, F_SETFL, O_RDWR|O_NONBLOCK) = 0
Occept(5, {sa_family=AF_FILE, path="ñ
"}, [2]) = 58
fcntl64(5, F_SETFL, O_RDWR) = 0
getsockname(58, {sa_family=AF_FILE,path="/var/lib/mysql"}, [28]) = 0
fcntl64(58, F_SETFL, O_RDONLY) = 0
fcntl64(58, F_GETFL) = 0x2 (flags O_RDWR)
fcntl64(58, F_SETFL, O_RDWR|O_NONBLOCK)= 0
setsockopt(58, SOL_IP, IP_TOS, [8], 4) = -1 EOPNOTSUPP (Operation not supported)
futex(0x86e7024, FUTEX_WAKE_OP_PRIVATE,1, 1, 0x86e7020, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_EQ, 0}) = 1
select(6, [4 5], NULL, NULL, NULL<unfinished ...>
+++ killed by SIGKILL +++Da quanto ho capito il problema datrattare è l'errore “EOPNOTSUPP” appartenente al mysql.
In rete ho trovato dei link incui ne parlano(link che questo sito non mi permette di inserire non essendo un utente premium), anche se i log non sono proprio uguali.
Mi era sembrato di capire che potevadipendere da un problema di privilegi, quindi ho fatto ripartire ilmysql con l'utente root(prima partiva con l'utente mysql) pensando dirisolvere però purtroppo il problema persiste.
Sembra sia un problema frequente,quindi potrebbe accadere la stessa cosa se si cambia gestore del VPS.
Il problema è che non mi èassolutamente chiaro come e dove intervenire per risolverla una voltaper tutte.Qualche consiglio?
-
Non è necessariamente quello l'errore. Anzi il SIGKILL arriva dopo la select. Potrebbe trattarsi di selinux che killa il processo credendo che sia malware. Potrebbe dipendere dalla poca ram a disposizione, con conseguente swap ( che notoriamente porta a crash di mysql ).
A questo punto ti conviene postare sul forum di mysql, in modo che gli sviluppatori possano almeno cercare di capire cosa succede. Onestamente con mysql se ne vedono di tutti i colori e non è il genere di dbms che raccomanderei. Mi spiace doverlo dire ma, dopo anni di tribolazione, passare ad un dbms come postgresql è stata una boccata d'aria fresca.
-
Qual'è esattamente il forum su cui postare?
Quali sono le informazioni che dovrei postare per essere il più chiaro possibile?
Utilizzi anche tu un Virtual Server per gestire dei siti web? E il tuo virtual server ha il postgresql? Poi indicarmi il link con le caratteristiche del VPS?
Grazie.
-
Questo qui http://forums.mysql.com/
Descrivi la situazione, postando i log, eventualmente dai prima un'occhiata alla questione della ram, swap e controlla che l'IDS ( selinux in genere ) non killi mysql perchè lo crede un malware.
Si, io uso anche alcuni vps ( per la verità molti meno che in passato ). Un paio su xtrahost, cioè questo http://xtrahost.co.uk/xenvps/
Il perchè uso xen è per via di compatibilità, stabilità e soprattutto performance ( molti vps virtuozzo fanno overselling ). La distribuzione che uso su quasi tutti è archlinux, a parte qualche dedicato con freebsd.
Ma il problema è che è proprio mysql che presenta significative problematiche, che vanno da crash per i quali non si capisce il motivo, a rallentamenti, instabilità in generale. Ovviamente il tutto avviene quando ci sono carichi di lavoro importanti.
-
Come verifico che l'IDS ( selinux in genere ) non killi mysql perchè lo crede un malware?
-
Qui c'è una guida per selinux http://wiki.centos.org/HowTos/SELinux
Quello che devi fare è essenzialmente creare un log leggibile tramite il comando "sealert -a /var/log/audit/audit.log > /path/to/mylogfile.txt" e poi guardare nel file creato se c'è qualcosa riguardo mysql.
-
Ovviamente puoi pure disabilitare momentaneamente l'IDS e vedere se mysql viene chiuso lo stesso.
-
Dopo averle provate di tutti i colori, non mi è rimasto altro che ripristinare il server tiscali al momento dell'acquisto.
Ho quindi potuto selezionare il ripristino del server scegliendo tra le seguenti distribuzioni:
-Fedora 9
-Fedora 13
-Centos 5.3
-Centos 6.2
-Ubuntu 10.4Una vera delusione aver scoperto che le prime 4 distribuzioni sono bacate. In pratica il mysql installato in quelle distribuzioni crasha dopo qualche secondo dall'avvio rendendo quindi impraticabile un sito web. Il problema non si risolve nemmeno aggiornando i package della singola distribuzione.
Insomma una vera delusione nei confronti di Tiscali, per la presenza del software bacato oltre alla mancata assistenza nonostante le numerose e-mail e nonostante sul loro sito per il servizio Virtual Server Special si ostinano ad assicurare un servizio di assistenza professionale ANCHE TELEFONICO(e telefonando c'è la vocina registrata che informa che per i d servizi web si deve far riferimento alla sezione "assistenza" del loro sito web, e quindi ci si deve arrangiare a ciò che si trova nella pseudo-faq).L'unica fortuna è che il tutto funziona sulla Ubuntu 10.4...ma questo lo si deve scoprire da soli, dopo aver perso circa 1 mese e mezzo di prove e studio su possibili cause sul webserver attivo, e dopo aver perso posizioni in termini di indicizzazione con il sito down per circa 2 mesi.
Mah...