Показаны сообщения с ярлыком optimization. Показать все сообщения
Показаны сообщения с ярлыком optimization. Показать все сообщения

Ускоряем производительность в nginx proxy

При включении 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;

...
}

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

Подключить 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

Настроить 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



Да будут колоситься попугаи на битрикс

В убунте
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 {} \;

Оптимизация настроек PHP под Bitrix

Для всех систем, только файл будет в другом месте в Debian-like
Создаем файл /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 7
pcre.jit=0

Настройка MySQL 5.7 на Ubuntu 16.04 под Bitrix

В MySQL 5.7 по-умолчанию включен innodb_file_per_table=1 и с ним вы нормальных «попугаев» по базе данных не получите

Поэтому первым делом делаем дамп базы, выключаем это в /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-COMMITTED

innodb-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 часто приносят прямо противоположный результат