Gros problèmes depuis derniere mise à jour Mysql sous Debian !

Discussion dans 'Administration d'un site Web' créé par Torlax, 13 Février 2012.

  1. Torlax
    Torlax Nouveau WRInaute
    Inscrit:
    13 Février 2012
    Messages:
    5
    J'aime reçus:
    0
    Bonjour à tous :)

    Je viens vers vous pour vous soumettre un problème (gros problème) qui viens de me tomber sur la tête depuis mon dernier "apt-get upgrade"...

    Notre site web est sous Debian 6 (mis en place par mes soins), avec a la fois Apache et Nginx (Nginx pour les statiques, Apache pour les requetes) et Mysql... Il s'agit d'un serveur dédié de chez OVH, relativement costaud (Bi-Xeon, 24 Go de ram et 2To de HDD)

    Tout fonctionnais très correctement depuis pas mal de temps, jusqu'a ce que je décide de faire une mise à jour Debian de maintenance... Nous avons un site à très forte charge (entre 700 et 1500 visiteurs unique simultané par heures).

    Depuis cette mise à jour (qui à donc, entre autre, mis à jour Mysql en dernière version) ce dernier n’arrête pas de tombé, et ce de manière totalement aléatoire ! (il peut y avoir simplement 500 visiteurs quand ça tombe, comme 1500...) Et là, c'est le drame : plus d'accès à la base SQL, conso mémoire serveur qui s'envole...

    Ce que j'ai vérifié APRÈS cette fameuse mise à jour :

    - Fichiers de configuration (Apache.conf, My.cf, Nginx) rigoureusement identique par rapport à avant la mise à jour.
    - Espace disque LOIN d’être plein (il reste 1.2 To)
    - Il n'y a que Mysql qui se fracasse... (pas Apache ni Nginx)
    - Nous avons essayer de désactiver tous les plugins Wordpress suite à sa mise à jour (au cas ou un plugin balancerais des requêtes SQL à foison)

    Voici à quoi ressemble mon Apache.conf :

    Code:
    #
    # Based upon the NCSA server configuration files originally by Rob McCool.
    #
    # This is the main Apache server configuration file.  It contains the
    # configuration directives that give the server its instructions.
    # See http://httpd.apache.org/docs/2.2/ for detailed information about
    # the directives.
    #
    # Do NOT simply read the instructions in here without understanding
    # what they do.  They're here only as hints or reminders.  If you are unsure
    # consult the online docs. You have been warned.  
    #
    # The configuration directives are grouped into three basic sections:
    #  1. Directives that control the operation of the Apache server process as a
    #     whole (the 'global environment').
    #  2. Directives that define the parameters of the 'main' or 'default' server,
    #     which responds to requests that aren't handled by a virtual host.
    #     These directives also provide default values for the settings
    #     of all virtual hosts.
    #  3. Settings for virtual hosts, which allow Web requests to be sent to
    #     different IP addresses or hostnames and have them handled by the
    #     same Apache server process.
    #
    # Configuration and logfile names: If the filenames you specify for many
    # of the server's control files begin with "/" (or "drive:/" for Win32), the
    # server will use that explicit path.  If the filenames do *not* begin
    # with "/", the value of ServerRoot is prepended -- so "foo.log"
    # with ServerRoot set to "/etc/apache2" will be interpreted by the
    # server as "/etc/apache2/foo.log".
    #
    
    ### Section 1: Global Environment
    #
    # The directives in this section affect the overall operation of Apache,
    # such as the number of concurrent requests it can handle or where it
    # can find its configuration files.
    #
    
    #
    # ServerRoot: The top of the directory tree under which the server's
    # configuration, error, and log files are kept.
    #
    # NOTE!  If you intend to place this on an NFS (or otherwise network)
    # mounted filesystem then please read the LockFile documentation (available
    # at <URL:http://httpd.apache.org/docs/2.2/mod/mpm_common.html#lockfile>);
    # you will save yourself a lot of trouble.
    #
    # Do NOT add a slash at the end of the directory path.
    #
    #ServerRoot "/etc/apache2"
    ServerName localhost
    
    #
    # The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
    #
    LockFile ${APACHE_LOCK_DIR}/accept.lock
    
    #
    # PidFile: The file in which the server should record its process
    # identification number when it starts.
    # This needs to be set in /etc/apache2/envvars
    #
    PidFile ${APACHE_PID_FILE}
    
    #
    # Timeout: The number of seconds before receives and sends time out.
    #
    Timeout 300
    
    #
    # KeepAlive: Whether or not to allow persistent connections (more than
    # one request per connection). Set to "Off" to deactivate.
    #
    KeepAlive On
    
    #
    # MaxKeepAliveRequests: The maximum number of requests to allow
    # during a persistent connection. Set to 0 to allow an unlimited amount.
    # We recommend you leave this number high, for maximum performance.
    #
    MaxKeepAliveRequests 2048
    
    #
    # KeepAliveTimeout: Number of seconds to wait for the next request from the
    # same client on the same connection.
    #
    KeepAliveTimeout 6
    
    ##
    ## Server-Pool Size Regulation (MPM specific)
    ## 
    
    # prefork MPM
    # StartServers: number of server processes to start
    # MinSpareServers: minimum number of server processes which are kept spare
    # MaxSpareServers: maximum number of server processes which are kept spare
    # MaxClients: maximum number of server processes allowed to start
    # MaxRequestsPerChild: maximum number of requests a server process serves
    <IfModule mpm_prefork_module>
        StartServers          64
        MinSpareServers       128
        MaxSpareServers       256
        ServerLimit		  512	
        MaxClients            512
        MaxRequestsPerChild   65536
    </IfModule>
    
    # worker MPM
    # StartServers: initial number of server processes to start
    # MaxClients: maximum number of simultaneous client connections
    # MinSpareThreads: minimum number of worker threads which are kept spare
    # MaxSpareThreads: maximum number of worker threads which are kept spare
    # ThreadLimit: ThreadsPerChild can be changed to this maximum value during a
    #              graceful restart. ThreadLimit can only be changed by stopping
    #              and starting Apache.
    # ThreadsPerChild: constant number of worker threads in each server process
    # MaxRequestsPerChild: maximum number of requests a server process serves
    <IfModule mpm_worker_module>
        StartServers          2
        MinSpareThreads      25
        MaxSpareThreads      75 
        ThreadLimit          64
        ThreadsPerChild      25
        MaxClients          150
        MaxRequestsPerChild   0
    </IfModule>
    
    # event MPM
    # StartServers: initial number of server processes to start
    # MaxClients: maximum number of simultaneous client connections
    # MinSpareThreads: minimum number of worker threads which are kept spare
    # MaxSpareThreads: maximum number of worker threads which are kept spare
    # ThreadsPerChild: constant number of worker threads in each server process
    # MaxRequestsPerChild: maximum number of requests a server process serves
    <IfModule mpm_event_module>
        StartServers          2
        MaxClients          150
        MinSpareThreads      25
        MaxSpareThreads      75 
        ThreadLimit          64
        ThreadsPerChild      25
        MaxRequestsPerChild   0
    </IfModule>
    
    # These need to be set in /etc/apache2/envvars
    User ${APACHE_RUN_USER}
    Group ${APACHE_RUN_GROUP}
    
    #
    # AccessFileName: The name of the file to look for in each directory
    # for additional configuration directives.  See also the AllowOverride
    # directive.
    #
    
    AccessFileName .htaccess
    
    #
    # The following lines prevent .htaccess and .htpasswd files from being 
    # viewed by Web clients. 
    #
    <Files ~ "^\.ht">
        Order allow,deny
        Deny from all
        Satisfy all
    </Files>
    
    #
    # DefaultType is the default MIME type the server will use for a document
    # if it cannot otherwise determine one, such as from filename extensions.
    # If your server contains mostly text or HTML documents, "text/plain" is
    # a good value.  If most of your content is binary, such as applications
    # or images, you may want to use "application/octet-stream" instead to
    # keep browsers from trying to display binary files as though they are
    # text.
    #
    DefaultType text/plain
    
    
    #
    # HostnameLookups: Log the names of clients or just their IP addresses
    # e.g., www.apache.org (on) or 204.62.129.132 (off).
    # The default is off because it'd be overall better for the net if people
    # had to knowingly turn this feature on, since enabling it means that
    # each client request will result in AT LEAST one lookup request to the
    # nameserver.
    #
    HostnameLookups Off
    
    # ErrorLog: The location of the error log file.
    # If you do not specify an ErrorLog directive within a <VirtualHost>
    # container, error messages relating to that virtual host will be
    # logged here.  If you *do* define an error logfile for a <VirtualHost>
    # container, that host's errors will be logged there and not here.
    #
    ErrorLog ${APACHE_LOG_DIR}/error.log
    
    #
    # LogLevel: Control the number of messages logged to the error_log.
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    #
    LogLevel warn
    
    # Include module configuration:
    Include mods-enabled/*.load
    Include mods-enabled/*.conf
    
    # Include all the user configurations:
    Include httpd.conf
    
    # Include ports listing
    Include ports.conf
    
    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    # If you are behind a reverse proxy, you might want to change %h into %{X-Forwarded-For}i
    #
    LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
    LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %O" common
    LogFormat "%{Referer}i -> %U" referer
    LogFormat "%{User-agent}i" agent
    
    # Include of directories ignores editors' and dpkg's backup files,
    # see README.Debian for details.
    
    # Include generic snippets of statements
    Include conf.d/
    
    # Include the virtual host configurations:
    Include sites-enabled/
    
    # Sécurisation du fichier de configuration de phpMyAdmin:
    <Files config.inc.php>
    	Order allow,deny
    	Deny from all
    </Files>
    


    Et mon fichier de conf Mysql (My.cf) :

    Code:
    #
    # The MySQL database server configuration file.
    #
    # You can copy this to one of:
    # - "/etc/mysql/my.cnf" to set global options,
    # - "~/.my.cnf" to set user-specific options.
    # 
    # One can use all long options that the program supports.
    # Run program with --help to get a list of available options and with
    # --print-defaults to see which it would actually understand and use.
    #
    # For explanations see
    # http://dev.mysql.com/doc/mysql/en/server-system-variables.html
    
    # This will be passed to all mysql clients
    # It has been reported that passwords should be enclosed with ticks/quotes
    # escpecially if they contain "#" chars...
    # Remember to edit /etc/mysql/debian.cnf when changing the socket location.
    [client]
    port		= 3306
    socket		= /var/run/mysqld/mysqld.sock
    
    # Here is entries for some specific programs
    # The following values assume you have at least 32M ram
    
    # This was formally known as [safe_mysqld]. Both versions are currently parsed.
    [mysqld_safe]
    socket		= /var/run/mysqld/mysqld.sock
    nice		= 0
    
    [mysqld]
    #
    # * Basic Settings
    #
    user		= mysql
    pid-file	= /var/run/mysqld/mysqld.pid
    socket		= /var/run/mysqld/mysqld.sock
    port		= 3306
    basedir		= /usr
    datadir		= /var/lib/mysql
    tmpdir		= /tmp
    language	= /usr/share/mysql/english
    skip-external-locking
    #
    # Instead of skip-networking the default is now to listen only on
    # localhost which is more compatible and is not less secure.
    bind-address		= 127.0.0.1
    #
    # * Fine Tuning
    #
    key_buffer		= 16M
    max_allowed_packet	= 16M
    thread_stack		= 192K
    thread_cache_size       = 8
    # This replaces the startup script and checks MyISAM tables if needed
    # the first time they are touched
    myisam-recover         = BACKUP
    max_connections        = 256
    table_cache            = 512
    #thread_concurrency     = 10
    #
    # * Query Cache Configuration
    #
    query_cache_limit	= 1M
    query_cache_size        = 32M
    #
    # * Logging and Replication
    #
    # Both location gets rotated by the cronjob.
    # Be aware that this log type is a performance killer.
    # As of 5.1 you can enable the log at runtime!
    #general_log_file        = /var/log/mysql/mysql.log
    #general_log             = 1
    #
    # Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
    #
    # Here you can see queries with especially long duration
    log_slow_queries	= /var/log/mysql/mysql-slow.log
    #long_query_time = 2
    #log-queries-not-using-indexes
    #
    # The following can be used as easy to replay backup logs or for replication.
    # note: if you are setting up a replication slave, see README.Debian about
    #       other settings you may need to change.
    #server-id		= 1
    #log_bin			= /var/log/mysql/mysql-bin.log
    expire_logs_days	= 10
    max_binlog_size         = 100M
    #binlog_do_db		= include_database_name
    #binlog_ignore_db	= include_database_name
    #
    # * InnoDB
    #
    # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
    # Read the manual for more InnoDB related options. There are many!
    #
    # * Security Features
    #
    # Read the manual, too, if you want chroot!
    # chroot = /var/lib/mysql/
    #
    # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
    #
    # ssl-ca=/etc/mysql/cacert.pem
    # ssl-cert=/etc/mysql/server-cert.pem
    # ssl-key=/etc/mysql/server-key.pem
    
    
    
    [mysqldump]
    quick
    quote-names
    max_allowed_packet	= 16M
    
    [mysql]
    #no-auto-rehash	# faster start of mysql but no tab completition
    
    [isamchk]
    key_buffer		= 16M
    
    #
    # * IMPORTANT: Additional settings that can override those from this file!
    #   The files must end with '.cnf', otherwise they'll be ignored.
    #
    !includedir /etc/mysql/conf.d/
    log-slow-queries = /var/log/mysql/mysql-slow.log
    long_query_time = 1
    
    J'ajouterais que j'ai utiliser le fameux script Mysql Tunning Primer (après les 48h recommandé de mise en service) pour optimiser le tout il y a longtemps.

    Ce qui est curieux, c'est qu'aucun de mes fichiers de config n'a apparemment bougé, mais la conso mémoire s'envole et mysql se vautre...

    Si vous avez un coup de pouce ou un conseil à me donner (ma config ne doit pas être au top je suppose), ça n'est vraiment pas de refus :)

    Enorme merci pour votre aide :wink:
    Bonne journée à tous
     
  2. lambi521
    lambi521 WRInaute passionné
    Inscrit:
    15 Juin 2010
    Messages:
    1 463
    J'aime reçus:
    0
    Une requête SQL qui ne fonctionne plus sur la nouvelle version ? La BDD est exactement configurée pareil ? Moteur, interclassement, etc ? Ce sont juste quelques pistes, ce n'est pas mon corps de métier...
     
  3. Torlax
    Torlax Nouveau WRInaute
    Inscrit:
    13 Février 2012
    Messages:
    5
    J'aime reçus:
    0
    En fait, j'ai checké un à un tous mes fichiers de config... Et ils ont pas bougé par rapport à avant (quand ça marchais bien). :?

    La seule chose qui a évidemment bouger, c'est la version de Nginx, Mysql et Apache. Leurs config à été conservé au poil de cul près.

    La les symptômes sont :

    - Plantage aléatoire de Mysql
    - Consommation mémoire qui s’envole quand SQL est dans les choux.
    - Plus d’accès en SSH quand c'est vautré... Ou alors il faut attendre genre 15/20 minutes avant d'avoir l'invite.
    - Erreur 500 sur tout le site.

    Le script Tuning Primer m'afficher un ratio de lock de 1 : 3000 parfois (ça il ne me le faisais pas avant)

    J'ai calé un coup de FSCK au cas ou ça serait l'un des disque, ça change rien...
     
  4. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Assez bizarre. il faudrait que tu regardes les logs.
    Par contre tu dis "plantage depuis changement de version", SANS DONNER LA VERSION !!

    Ce qui est très bizarre avec ton my.cnf, c'est qu'il ressemble à celui par défaut fourni avec Debian, pas du tout à un my.cnf configuré pour un serveur avec 24Go de RAM mais plutôt un petit..
     
  5. Torlax
    Torlax Nouveau WRInaute
    Inscrit:
    13 Février 2012
    Messages:
    5
    J'aime reçus:
    0

    Il tournais bien en fait par défaut... Tu l'optimiserais comment pour un serveur avec 24Go toi ?
     
  6. sekai
    sekai Nouveau WRInaute
    Inscrit:
    29 Août 2011
    Messages:
    17
    J'aime reçus:
    0
    J'avais le même problème que toi ,que j'ai pas réussi à corriger entièrement , Bon pour le maxclient d'apache , Considère à l'élever à 900 par ex ..
     
  7. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Bah il faudrait voir ce dont tu as réellement besoin et la gueule de tes bases.
    Là comme ça tu me demandes de savoir lire dans une boule de cristal ;)
    Regarde un peu du côté des outils comme "tuning primer" ou "mysqltuner" ça pourrait te donner pas mal d'idées.
     
  8. Torlax
    Torlax Nouveau WRInaute
    Inscrit:
    13 Février 2012
    Messages:
    5
    J'aime reçus:
    0

    Heuu, comme dis dans mon premier message, j'utilise Tuning Primer...
    Comme je l'ai déjà dit également, j'ai entre 1000 et 1800 visiteurs unique et simultanés, par heures.

    J'ai deux bases Mysql, l'une de 150 Mo, celle du site (Wordpress).
    L'autre de 30 Mo, celle du forum (Invision Power Board).

    j'ai migré toutes mes tables vers Innodb.

    Le serveur est ENTIÈREMENT dédié au site, ce qui veut dire que le proç, la ram (les 24 Go) et les 2.3 To de disque sont entièrement dédié au site. Je suis sous Debian Squeeze, j'utilise Apache 2, Mysql en dernière version. Je pense qu'avec ces éléments, il est possible de me conseiller au moins vers quel type d'optimisation je pourrais faire sur un serveur de cette trampe :)

    Grand merci :wink:
     
  9. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 774
    J'aime reçus:
    0
    Bah déjà tu pourrais suivre ce que te dis tuning primer ;)
    Généralement ça suffit amplement à faire des bonnes modifications dans un premier temps.

    Attention à ne pas parler de "visiteurs simultanés" car ça ne veut rien dire.
    Pour moi 1800 visiteurs simultanés veut dire qu'à un instant "t" (inférieur à la milliseconde) tu as 1800 personnes qui sont sur ton site.
    Vu tes bases qui ont l'air petite, à mon avis en suivant rapidement les conseils de Tuning Primer, ça devrait fonctionner sans soucis.
     
  10. Torlax
    Torlax Nouveau WRInaute
    Inscrit:
    13 Février 2012
    Messages:
    5
    J'aime reçus:
    0
    Hello :)

    Donc, ce que me dit Tuning Primer (après 48h de mise en service donc) je l'ai déjà suivi, tout est clean de ce côté, je n'est pas d'erreurs :)

    Au sujet des 1800 visiteurs simultané, c'est bien à un instant "T"... ça peu même passer de 500 visiteurs, à 2100 visiteurs en moins de 20 secondes, et ça arrive très régulièrement le soir, aux alentours de 19h00 quand les gens rentre chez eux.

    Hier j'ai éliminé toutes les éventuelles erreurs que je pouvais avoir sur le serveur :

    J'ai recompilé "eAccelerator", car après la mise à jour de Mysql, je me suis aperçu qu'il me générais une erreur dans mes logs apache suite à la mise à jour du serveur. Donc tout va bien de se coté maintenant.

    J'avais mon raid 5 (celui de 2,3 To) qui s’emballait sous ESX (message de perte de performance) J'ai donc demandé à OVH de checké si a tout hasard il n'y aurais pas un des disques du Raid 5 qui serait monté au plafond... Ce n'est pas le cas.
     
Chargement...
Similar Threads - Gros problèmes derniere Forum Date
Gros problèmes de référencement : chute brutale en Mai et depuis plus rien ne va Problèmes de référencement spécifiques à vos sites 1 Septembre 2014
Gros problèmes de référencement Référencement Google 11 Avril 2014
Gros problèmes de positionnement sur google Problèmes de référencement spécifiques à vos sites 10 Mai 2013
Gros problemes avec hotmail, a la limite du dépot de plainte Administration d'un site Web 1 Septembre 2007
De tres tres gros problemes a venir Débuter en référencement 9 Mai 2007
Grosse deception adwords, des problemes chez eux ? AdWords 14 Janvier 2007
gros problemes pour etre vu Débuter en référencement 5 Juillet 2006
gros problemes promotions de sites et forums Débuter en référencement 23 Mai 2006
tres gros problemes avec les redirections Débuter en référencement 14 Avril 2006
Gros Problèmes de Mail - Hebergeur ou FAI Administration d'un site Web 21 Décembre 2005
Un gros pavé javascript peut-il poser des problèmes? Débuter en référencement 31 Mai 2005
Gros problemes avec les emails Administration d'un site Web 5 Septembre 2003
Budget Crawl Google pour un gros site Crawl et indexation Google, sitemaps 18 Novembre 2021
Grosse perte de positionnement Problèmes de référencement spécifiques à vos sites 5 Juillet 2021
Google Discover : grosse chute Référencement Google 25 Juin 2021
WordPress Grosse chute de trafic, pourquoi ? Problèmes de référencement spécifiques à vos sites 9 Juin 2021
Search Console Explorée/Détectée, actuellement non indexée (gros volumes) Crawl et indexation Google, sitemaps 27 Mai 2021
Search Console Très grosse baisse de positionnement suite à un piratage WP (pages exclues) Problèmes de référencement spécifiques à vos sites 7 Février 2021
Intégrer un site en sous domaine d'un gros site Demandes d'avis et de conseils sur vos sites 1 Février 2021
Grosse perte de positionnement - Uniquement sur Ordinateur Référencement Google 7 Janvier 2021