Donné
Le portail d'entreprise de Bitrix24, conçu pour plusieurs centaines d'utilisateurs, avec ~ 300 Go de fichiers et ~ 80 Go de bases de données sur un serveur dédié avec BitrixVM.
Avant de modifier les paramètres, les indicateurs étaient les suivants:
Test de performance standard dans le panneau d'administration Bitrix.
De tous les paramètres, vous devez porter une attention particulière à l'utilisation de MySQL et de la configuration PHP. Ces indicateurs sont particulièrement importants pour nous, car ils reflètent indirectement le niveau de performance du projet.
Demande du client
Notre client souhaitait non seulement déplacer le projet vers un nouveau serveur dédié, mais également améliorer les paramètres de performance. Par exemple, les difficultés incluent l'impossibilité de vider la base de données sur le serveur source et la lenteur du fonctionnement du portail lui-même.
Décision
Les paramètres MySQL sont la première chose avec laquelle nous commençons à travailler.
Remplaçons les valeurs standard de BitrixVM par:
explicit_defaults_for_timestamp = 1
expire_logs_days = 10
max_binlog_size = 100M
max_allowed_packet = 128M
transaction-isolation = READ-COMMITTED
performance_schema = OFF
sql_mode = ""
# Cache parameters
query_cache_type = 1
query_cache_size=16M
query_cache_limit=4M
key_buffer_size=256M
join_buffer_size=2M
sort_buffer_size=4M
# Parameters for temporary tables
tmpdir = /tmp
tmp_table_size=128M
max_heap_table_size=128M
thread_cache_size = 4
table_open_cache = 2048
# InnoDB parameters
innodb_file_per_table
innodb_buffer_pool_size = 8192M
innodb_buffer_pool_instances = 1
innodb_flush_log_at_trx_commit = 0
innodb_flush_method = O_DIRECT
innodb_strict_mode = OFF
# Database charset parameters
character-set-server=utf8
collation-server=utf8_general_ci
init-connect="SET NAMES utf8"
[mysqldump]
quick
quote-names
default-character-set = utf8
L'étape suivante consiste à changer le mode d'alimentation du processeur, car Bitrix aime une fréquence de processeur plus élevée.
En fonction du nombre de cœurs dans chaque
fichier de modification ,
/sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
économisez de l' énergie sur les performances .
Ensuite, vérifions le résultat:
nous voyons que le travail avec MySQL a le plus changé: les paramètres "write" et "change" ont grandi presque 3 fois; l'indicateur "lecture" a augmenté de 5 fois. Cela signifie que lorsque le site accède à la base de données, ce type d'opération sera effectué plusieurs fois plus rapidement. En conséquence, la performance globale du site augmentera également.
En raison du changement du mode d'alimentation du CPU (cela est possible, car un serveur dédié est utilisé), le nombre d'opérations sur le CPU a augmenté.
Vous devez maintenant modifier les paramètres d'OPcache.
Dans le fichier,
/etc/php.d/10-opcache.ini
remplacez sa valeur d'origine par:
zend_extension=opcache.so opcache.enable = 1 opcache.enable_cli = 1 opcache.memory_consumption = 256 opcache.max_file_size = 2M opcache.interned_strings_buffer = 64 opcache.max_accelerated_files = 130987 opcache.fast_shutdown = 1 opcache.revalidate_freq = 1 opcache.fast_shutdown=1 opcache.save_comments=1 opcache.load_comments=1 opcache.use_cwd = 1
Remarque: le test Bitrix vous indiquera que le paramètre
opcache.revalidate_freq
doit avoir une valeur de 0 et non de 1, mais il fonctionnera mieux avec celui que nous avons spécifié.
Le paramètre lui-même est
opcache.revalidate_freq
responsable de la vérification du cache: avec une valeur de 0, il est exécuté à chaque lancement du script, et avec une valeur de 1, il est exécuté une fois par seconde.
Après avoir changé les paramètres, nous vérifions le résultat:
du tableau, il s'ensuit que l'indicateur de travail avec MySQL a augmenté un peu plus. Dans le même temps, les opérations du processeur et les performances globales de Bitrix ont considérablement augmenté en raison des modifications des paramètres PHP et de la mise en cache des scripts.
Production
Grâce à ces simples changements dans les paramètres, nous avons pu augmenter les performances du projet de 3 fois et l'interaction avec la base de données - de 3 à 5 fois (en fonction du score global du test Bitrix). Notre client est entièrement satisfait du travail du projet sur le nouveau serveur. Nous l'avons fait!
Dans cette méthode d'optimisation, nous nous sommes concentrés sur les principaux points avec lesquels Bitrix interagit, ainsi que sur le test lui-même. Les clients y prêtent souvent attention.
D'autres moyens d'améliorer les performances de Bitrix incluent l'installation et la configuration d'un service de mise en cache (par exemple, Redis). Les performances du CMS peuvent chuter, mais les performances globales du site devraient être meilleures. De plus, vous pouvez utiliser php-fpm, mais dans notre cas, il serait irrationnel de refaire le système d'exploitation initialement configuré pour Bitrix.
Vous pouvez également jouer avec les paramètres MySQL. Ils sont individuels pour chaque projet et configuration, il n'y a donc pas une recette parfaite. Il sera intéressant de connaître vos hacks de vie pour optimiser les projets dans Bitrix. Partagez votre opinion dans les commentaires.