При включении nginx в качестве front-end proxy проседают "попугаи". Это в целом естественно, так как есть задержка на передачу пакетов между nginx <-> apache, но можно несколько ускорить и выиграть до 15%
# vim /etc/nginx/nginx.conf
worker_processes 3; #Numcores -1
events {
...
use epoll;
}
http {
...
sendfile on;
tcp_nopush on;
tcp_nodelay on;
...
}
# vim /etc/nginx/vhosts/www-root/example.com
location @fallback {
....
proxy_buffering off;
...
}
Показаны сообщения с ярлыком optimization. Показать все сообщения
Показаны сообщения с ярлыком optimization. Показать все сообщения
postgresql сжать базу
Иногда так бывает, что сильно разрослась база данных postgresql и необходимо ее сжать, так как занимает слишком много места на диске (высвободить место которое свободно)
Делаем так
1. Бэкапим /var/lib/postgresql
2. Коннектимся в postgres
su postgres
psql
смотрим список баз
\l
подключаемся к базе
\c database_name
Затем выполняем сжатие баз
vacuum full verbose;
И также перестраиваем индексы
reindex database database_name;
Полезные ссылки:
https://stackoverflow.com/questions/769683/show-tables-in-postgresql
https://dba.stackexchange.com/questions/1285/how-do-i-list-all-databases-and-tables-using-psql
https://www.techonthenet.com/postgresql/vacuum.php
Делаем так
1. Бэкапим /var/lib/postgresql
2. Коннектимся в postgres
su postgres
psql
смотрим список баз
\l
подключаемся к базе
\c database_name
Затем выполняем сжатие баз
vacuum full verbose;
И также перестраиваем индексы
reindex database database_name;
Полезные ссылки:
https://stackoverflow.com/questions/769683/show-tables-in-postgresql
https://dba.stackexchange.com/questions/1285/how-do-i-list-all-databases-and-tables-using-psql
https://www.techonthenet.com/postgresql/vacuum.php
Подключить swap swapfile на Linux
dd if=/dev/zero of=/swapfile bs=1M count=2048 ; chmod 600 /swapfile ; mkswap /swapfile ; swapon /swapfile ; echo '/swapfile none swap sw 0 0' >> /etc/fstab
Отключить патчи meltdown и spectre
# vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="fsck.repair=yes elevator=deadline"
GRUB_CMDLINE_LINUX="noibrs noibpb nopti nospectre_v2 nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off mitigations=off"
# update-grub2
Linux kernel 5.2 и выше достаточно только указать mitigations=off и будет отключать и все остальные опции
См. также: https://make-linux-fast-again.com
GRUB_CMDLINE_LINUX_DEFAULT="fsck.repair=yes elevator=deadline"
GRUB_CMDLINE_LINUX="noibrs noibpb nopti nospectre_v2 nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off mitigations=off"
Linux kernel 5.2 и выше достаточно только указать mitigations=off и будет отключать и все остальные опции
См. также: https://make-linux-fast-again.com
Настроить CPU в performance mode для хорошей производительности
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# yum install cpupowerutils kernel-tools
# systemctl enable --now cpupower
# cpupower frequency-set --governor performance
Да будут колоситься попугаи на битрикс
# yum install cpupowerutils kernel-tools
# systemctl enable --now cpupower
# cpupower frequency-set --governor performance
Да будут колоситься попугаи на битрикс
В убунте
apt install cpufrequtils
for i in 0 1 2 3 4 5 6 7 8 9 10 11; do cpufreq-set -c $i -g performance; done
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
vi /etc/default/cpufrequtils
GOVERNOR="performance"
Оптимизация картинок по cron через jpegoptim и optipng
## Optimization jpg
15 22 * * * /usr/bin/find /var/www/*/data/www/ -type f -iregex '.*\.jpe?g' -mtime -1 -exec /usr/bin/jpegoptim --preserve --quiet {} \;
## Optimization png
15 23 * * * /usr/bin/find /var/www/*/data/www/ -type f -iregex '.*\.png' -mtime -1 -exec /usr/bin/optipng --preserve --quiet {} \;
15 22 * * * /usr/bin/find /var/www/*/data/www/ -type f -iregex '.*\.jpe?g' -mtime -1 -exec /usr/bin/jpegoptim --preserve --quiet {} \;
## Optimization png
15 23 * * * /usr/bin/find /var/www/*/data/www/ -type f -iregex '.*\.png' -mtime -1 -exec /usr/bin/optipng --preserve --quiet {} \;
Оптимизация настроек PHP под Bitrix
Для всех систем, только файл будет в другом месте в Debian-like
Создаем файл /etc/php.d/00-bitrix.ini
Создаем файл /etc/php.d/00-bitrix.ini
display_errors = On
error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING
; Set some more PHP parameters
date.timezone = Europe/Moscow
enable_dl = Off
short_open_tag = On
allow_url_fopen = On
; Change default values of important constants
max_input_vars = 10000
max_execution_time = 300
post_max_size = 256M
upload_max_filesize = 256M
memory_limit = 256M
pcre.backtrack_limit = 1000000
pcre.recursion_limit = 10000
realpath_cache_size = 4096k
; Utf-8 support
mbstring.func_overload = 2
mbstring.internal_encoding = UTF-8
; OpCache settings
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=100000
opcache.validate_timestamps=1
opcache.revalidate_freq=0
opcache.fast_shutdown=1; php 7pcre.jit=0
Настройка MySQL 5.7 на Ubuntu 16.04 под Bitrix
В MySQL 5.7 по-умолчанию включен innodb_file_per_table=1 и с ним вы нормальных «попугаев» по базе данных не получите
Поэтому первым делом делаем дамп базы, выключаем это в /etc/mysql/my.cnf и заливаем обратно
Ниже приведен конфиг на котором только что поставленный битрикс на core i5 выдает под 100 попугаев
Больше там практически ничего не надо крутить что бы ни говорили различные тюнеры — приведет только к потери производительности, можно только увеличивать innodb_buffer_pool_size если база большая и памяти свободной много
Также требуется увеличить лимиты на число открытых файлов (иначе table_open_cache может просто не отрабатывать)
И перезапустить mysql
Также в рекомендую менять только
innodb_buffer_pool_size — для InnoDB
key_buffer_size — для MyISAM
Чтобы база входила в оперативную память, но при этом значение это должно быть меньше чем всего ram на сервере
Настройки всего остального в MySQL часто приносят прямо противоположный результат
Поэтому первым делом делаем дамп базы, выключаем это в /etc/mysql/my.cnf и заливаем обратно
Ниже приведен конфиг на котором только что поставленный битрикс на core i5 выдает под 100 попугаев
root@ubuntu:~# cat /etc/mysql/my.cnf
#
# 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
#
# * 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/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
sql_mode = ""
performance-schema = false
table_open_cache = 1024
thread_cache_size = 4
query_cache_size = 32M
query_cache_type = 1
tmp_table_size = 128M
max_heap_table_size = 128M
#innodb_file_per_table = 0
innodb_buffer_pool_size = 1024M
innodb_flush_log_at_trx_commit = 2
#innodb_buffer_pool_instances = 2
innodb_flush_method = O_DIRECT
transaction-isolation = READ-COMMITTEDinnodb-strict-mode = OFFБольше там практически ничего не надо крутить что бы ни говорили различные тюнеры — приведет только к потери производительности, можно только увеличивать innodb_buffer_pool_size если база большая и памяти свободной много
Также требуется увеличить лимиты на число открытых файлов (иначе table_open_cache может просто не отрабатывать)
mkdir /etc/systemd/system/mysql.service.d/
printf '[Service]\nLimitNOFILE = infinity\nLimitMEMLOCK = infinity\n' >> /etc/systemd/system/mysql.service.d/limits.confИ перезапустить mysql
systemctl daemon-reload
systemctl restart mysqlТакже в рекомендую менять только
innodb_buffer_pool_size — для InnoDB
key_buffer_size — для MyISAM
Чтобы база входила в оперативную память, но при этом значение это должно быть меньше чем всего ram на сервере
Настройки всего остального в MySQL часто приносят прямо противоположный результат
Подписаться на:
Сообщения (Atom)