Dado
O portal corporativo em Bitrix24, projetado para várias centenas de usuários, com ~ 300 GB de arquivos e ~ 80 GB de bancos de dados em um servidor dedicado com BitrixVM.
Antes de alterar as configurações, os indicadores eram os seguintes:
Teste padrão de desempenho no painel de administração do Bitrix
De todos os parâmetros, você deve prestar atenção especial em trabalhar com MySQL e Configuração de PHP. Esses indicadores são especialmente importantes para nós, pois refletem indiretamente o nível de desempenho do projeto.
Pedido do cliente
Nosso cliente queria não apenas mover o projeto para um novo servidor dedicado, mas também melhorar os parâmetros de desempenho. Por exemplo, as dificuldades incluem a incapacidade de despejar o banco de dados no servidor de origem e a operação lenta do próprio portal.
Decisão
As configurações do MySQL são a primeira coisa com a qual começamos a trabalhar.
Vamos substituir os valores padrão do BitrixVM por:
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
O próximo passo é mudar o modo de energia da CPU, já que o Bitrix adora uma frequência de processador mais alta.
Dependendo do número de núcleos em cada
arquivo de mudança,
/sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
economize no desempenho .
A seguir, vamos verificar o resultado:
Vemos que o trabalho com MySQL mudou muito: os parâmetros "write" e "change" aumentaram quase 3 vezes; o indicador de "leitura" aumentou 5 vezes. Isso significa que quando o site acessar o banco de dados, este tipo de operação será realizada várias vezes mais rápido. Como resultado, o desempenho geral do site também aumentará.
Devido à alteração do modo de potência da CPU (isso é possível, visto que é usado um servidor dedicado), o número de operações na CPU aumentou.
Agora você precisa editar as configurações do OPcache.
No arquivo,
/etc/php.d/10-opcache.ini
substitua seu valor original por:
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
Nota: O teste Bitrix dirá que o parâmetro
opcache.revalidate_freq
deve ter um valor 0 e não 1, mas funcionará melhor com o que especificamos.
O próprio parâmetro é
opcache.revalidate_freq
responsável pela verificação do cache: com valor 0, ele é executado toda vez que o script é iniciado, e com valor 1, é executado uma vez por segundo.
Depois de mudar as configurações, verificamos o resultado:
Da tabela segue que o indicador de trabalho com MySQL cresceu um pouco mais. Ao mesmo tempo, as operações da CPU e o desempenho geral do Bitrix aumentaram significativamente devido às mudanças nas configurações do PHP e no cache de script.
Resultado
Graças a essas mudanças simples nas configurações, fomos capazes de aumentar o desempenho do projeto em 3 vezes, e a interação com o banco de dados - de 3 a 5 vezes (com base na pontuação geral do teste Bitrix). Nosso cliente está totalmente satisfeito com o trabalho do projeto no novo servidor. Conseguimos!
Nesse método de otimização, focamos nos principais pontos com os quais o Bitrix interage, bem como no próprio teste. Os clientes costumam prestar atenção nisso.
Outras maneiras de melhorar o desempenho do Bitrix incluem instalar e configurar um serviço de cache (por exemplo, Redis). O desempenho do CMS pode cair, mas o desempenho geral do site deve ser melhor. Além disso, você pode usar php-fpm, mas em nosso caso seria irracional refazer o sistema operacional inicialmente configurado para Bitrix.
Você também pode brincar com as configurações do MySQL. Eles são individuais para cada projeto e configuração, portanto, não existe uma receita perfeita. Será interessante conhecer os hacks de sua vida para otimizar projetos em Bitrix. Compartilhe sua opinião nos comentários.