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 :
Et mon fichier de conf Mysql (My.cf) :
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
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