1 votes

Colonnes TIME dans la commande TOP pour mysql

Lorsque j'exécute top sur mon serveur de base de données, je constate que mysqld fonctionne depuis 4:00.51 et que cela ne cesse d'augmenter.

Je suppose que cela signifie qu'un processus avec mysql est en cours depuis tout ce temps, d'après d'autres publications ici. Il n'est pas configuré en mode cumulatif autant que je puisse le dire, car l'en-tête semblerait changer en CTIME si tel était le cas.

Ce qui m'interroge, c'est de savoir si c'est normal pour un site qui établit de nombreuses connexions individuelles en utilisant PHP. Je ne devrais pas avoir de processus longue durée qui maintiendrait une connexion mysql aussi longtemps, seulement quelques secondes au maximum.

Suis-je dans l'erreur en pensant que ce temps se rapporte à un seul processus/connexion en cours? D'habitude, je le vois disparaître rapidement sur le TOP, et non rester là avec ce nombre croissant.

1voto

Adam Points 11

Lorsque vous regardez top et voyez mysqld, il ne devrait y avoir qu'un seul mysqld par instance. Les anciennes versions de mysqld compilées avec le serveur créent de nombreux threads. Je suppose que vous n'utilisez pas une telle version.

Pour voir les connexions individuelles, vous pouvez faire l'une des deux choses suivantes

Dans le client mysql, exécutez SHOW PROCESSLIST; (Source de la connexion entrante dans la troisième colonne Host)

Dans le système d'exploitation, exécutez

  • netstat | grep -i mysql
  • netstat | grep 3306

Pour insister, vous devriez seulement voir un processus mysqld par instance.

Si vous voulez vérifier la valeur de temps telle qu'elle apparaît dans top, demandez à mysql

Si vous avez MySQL 5.1+, exécutez ceci:

SELECT 
    TRIM(REPLACE(CONCAT(
        IF(dy=0,'',IF(dy=1,'1 jour ',CONCAT(dy,' jours '))),
        IF(hr=0,'',IF(hr=1,'1 h ', CONCAT(hr,' hrs  '))),
        IF(mn=0,'',IF(mn=1,'1 min ',CONCAT(mn,' mins '))),
        IF(sc=0,'',IF(sc=1,'1 sec ',CONCAT(sc,' secs ')))),'  ',' '))
    TimeDisplay
FROM (SELECT dy,hr,mn,MOD(sec_aaaa,60) sc
FROM (SELECT dy,hr,FLOOR((sec_aaa - dy*86400 - hr*3600)/60) mn,sec_aaa sec_aaaa
FROM (SELECT dy,FLOOR((sec_aa - (dy*86400))/3600) hr,sec_aa sec_aaa
FROM (SELECT FLOOR(sec_a/86400) dy,sec_a sec_aa
FROM
    (
        SELECT variable_value sec_a
        FROM information_schema.global_status
        WHERE variable_name = 'Uptime'
    )
A) AA) AAA) AAAA) B;

Si vous avez MySQL 5.0, exécutez ceci

MYSQL_CONN="-uroot -ppassword"
UPTIME_SEC=`mysql ${MYSQL_CONN} -A -N -e"SHOW GLOBAL STATUS LIKE 'Uptime'" | awk '{print $2}'`
SQLTIME="SELECT TRIM(REPLACE(CONCAT("
SQLTIME="${SQLTIME} IF(dy=0,'',IF(dy=1,'1 jour ',CONCAT(dy,' jours '))),"
SQLTIME="${SQLTIME} IF(hr=0,'',IF(hr=1,'1 h ', CONCAT(hr,' hrs  '))),"
SQLTIME="${SQLTIME} IF(mn=0,'',IF(mn=1,'1 min ',CONCAT(mn,' mins '))),"
SQLTIME="${SQLTIME} IF(sc=0,'',IF(sc=1,'1 sec ',CONCAT(sc,' secs ')))),'  ',' ')) TimeDisplay"
SQLTIME="${SQLTIME} FROM (SELECT dy,hr,mn,MOD(sec_aaaa,60) sc"
SQLTIME="${SQLTIME} FROM (SELECT dy,hr,FLOOR((sec_aaa - dy*86400 - hr*3600)/60) mn,sec_aaa sec_aaaa"
SQLTIME="${SQLTIME} FROM (SELECT dy,FLOOR((sec_aa - (dy*86400))/3600) hr,sec_aa sec_aaa"
SQLTIME="${SQLTIME} FROM (SELECT FLOOR(sec_a/86400) dy,sec_a sec_aa"
SQLTIME="${SQLTIME} FROM (SELECT ${UPTIME_SEC} sec_a ) A) AA) AAA) AAAA) B"
MYSQL_START_TIME=`mysql ${MYSQL_CONN} -A -N -e"${SQLTIME}"`
echo ${MYSQL_START_TIME}

Cela vous donnera le nombre de secondes pendant lesquelles mysqld a été en cours d'exécution.

Si vous voulez voir la date et l'heure de démarrage de mysqld

MySQL 5.1+

select (now() - interval variable_value second) MySQLStartTime from
information_schema.global_status where variable_name='uptime';

MySQL 5.0

MYSQL_CONN="-uroot -ppassword"
UPTIME_SEC=`mysql ${MYSQL_CONN} -A -N -e"SHOW GLOBAL STATUS LIKE 'Uptime'" | awk '{print $2}'`
MYSQL_START_TIME=`mysql ${MYSQL_CONN} -A -N -e"SELECT (NOW() - INTERVAL ${UPTIME_SEC} SECOND) MySQLStartTime"`
echo ${MYSQL_START_TIME}

Essayez ceci !!!

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X