21 Jun 2024 
Centre d'assistance » Base de connaissances » Support Technique » Performances » Optimisation des bases de données MySQL
 Connexion [Mot de passe perdu] 
Courriel:
Mot de passe:
Se souvenir de moi:
 
 Recherche
 Détails des articles
 Optimisation des bases de données MySQL
Solution IceWarp toutes versions -

Cet article a pour objectif l'optimisation de MySQL utilisé pour les bases de données du serveur IceWarp.

Les bases de données sont utilisées pour stocker certaines informations permanentes et temporaires du serveur IceWarp, elles sont accessibles par le bouton "Paramètres BD..." :
1- Domaines et Comptes, Système -> Stockage -> onglet Comptes
2- GroupWare, GroupWare -> Général -> onglet Général
3- Anti-Spam, Anti-Spam -> Général -> onglet Général
4- Cache Répertoire, (depuis la v10.4) Système -> Avancé -> onglet Cache répertoire
5- Cache Client Web, GroupWare -> Client Web -> onglet Général
6- Cache Active Sync, (depuis la v11) GroupWare -> ActiveSync
7- Cache Rapports de spam, (depuis la v11) Anti Spam -> Action -> onglet Rapports

En standard, ces bases de données sont des bases SQLite mais dès que le nombre d'utilisateurs devient conséquent (supérieur à quelques centaines), il est conseillé de passer à une base de données plus performante, MySQL est une bonne solution.
Voir ce document pour passer à MySQL :

Pour le module Client Web (N°5), la base SQLite configurée par défaut peut être conservée si on ne constate pas de problème de performance sur le Client Web. Si on utilise MySQL pour ce module, il faut régler les paramètres MySQL au plus juste en fonction de l'usage et des caractéristiques matérielles du serveur.

Même s'il est possible de créer une seule base de données regroupant toutes les tables, il est conseillé, pour des questions de sécurité et de facilité de gestion, de créer une base pour chaque module IceWarp.

L'accès à MySQL peut être effectué en direct sans passer par ODBC, c'est l'option qui est conseillée car elle est plus performante.

Pour la version de MySQL, les versions récentes doivent être utilisées. MariaDB peut aussi être utilisé.

Le moteur MySQL à choisir est InnoDB et non MyISAM, InnoDB étant plus adapté pour un usage nécessitant des accès concurrents. MyISAM peut engendrer des erreurs.

Pour le paramétrage des bases de données, le fichier joint My.ini donné à titre d'exemple indique les différentes valeurs préconisées. Ce sont bien entendu des indications qu'il faut adapter à l'environnement et en particulier à la mémoire disponible.
Sous Windows, l'emplacement du fichier my.ini peut être déterminé en allant sur les propriétés du service MySQL
Vérifier en particulier :
- max_connections = <mettre une valeur de 200 à 800>  // Nombre de connexions simultanées avec la base de données
- innodb_buffer_pool_size = 512M (voire jusqu'à 4096M si la mémoire dynamique est suffisante),
- query_cache_size = 64M

Si le serveur possède une mémoire importante (au moins 32 Go), il peut être intéressant d'augmenter la mémoire disponible pour MySQL :
- key_buffer_size=2048M
- thread_cache_size = 40 (nombre de thread en cache, 8 ou 10 par défaut généralement)

Un paramètre important est innodb_buffer_pool_size qui permet de limiter le nombre d'accès au disque.

Si vous utilisez MySQL pour le cache du client Web (ligne 5 ci-dessus), il est important de supprimer le mode 'strict' en mettant :
sql-mode = "NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

Pour les réglages côté IceWarp, il est conseillé de modifier la valeur par défaut du paramètre suivant :
Système -> Avancé -> Protocole -> Accès Multithread BD (pool de threads)
Utiliser 350 (cette valeur doit cependant rester inférieure à la valeur du paramètre max_connections de my.ini - utiliser 500 ou plus)

En cas d'erreurs sur v12, il est possible d' appliquer des modifications de registry sur le serveur IceWarp :
- deux nouvelles valeurs dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Value Name: MaxUserPort
Data Type: REG_DWORD
Value: 65534
et
Value Name: TcpTimedWaitDelay
Data Type: REG_DWORD
Value: 30

Suite à cela, rebooter le serveur MySQL et ensuite le serveur IceWarp
 

Modifié en janvier 2020


Détails des articles
Code d'identification de l'article: 339
Créé le: 06 Nov 2012 09:20 AM

 Cette réponse m'a été utile  Cette réponse ne m'a pas été utile