Помощь Поделитесь опытом настройки my.cnf для Престы?

Как это правильно расшифровать?
 
Настройки этот файла строго индивидуальны для каждого отдельного случая. Не стоит тупо копировать от сюда что либо и вставлять с свой файл на сервере. Используйте стандартные настройки файла my.cnf и спустя какое то время регулируйте их с помощью mysqltuner, обязательно нужно использовать mysqltuner на рабочем проекте и выжидать недели для сбора статистики этим скриптом, чтобы там были правильные указания на те параметры которые нужно изменить в файле my.cnf
 
да но уже есть указания как раз от mysqltuner в предыдущем посте, но я не понимаю как их расшифровать?
 
mysqltuner нужно запускать через несколько дней после перезапуска базы
В выводе у вас написано, что может использоваться слишком много памяти до 7.5G.
Увеличить query_cache_size больше 256М
Увеличить join_buffer_size больше 18М

Вы можете конвертировать таблицы MyISAM в InnoDB (Для просмотра ссылки Войди или Зарегистрируйся) и сократить размер буферов для MyISAM для уменьшения используемой памяти. Также можно уменьшить максимальное число соединений, это уменьшит максимальный размер используемой памяти. Буфер InnoDB у вас заполнен на 100%, так что его можно еще увеличить
 
Последнее редактирование:
В выводе у вас написано, что может использоваться слишком много памяти до 7.5G.
а как можно это ограничить скажем до 2-х Гигов?

Увеличить query_cache_size больше 256М
Увеличить join_buffer_size больше 18М

не нашел таких в самом файле!
то есть их просто нужно добавить как я понимаю?

просто написав так - верно? синтаксис правильный?:
query_cache_size=256М
join_buffer_size=18М


Вы можете конвертировать таблицы MyISAM в InnoDB и сократить размер буферов для MyISAM для уменьшения используемой памяти. Также можно уменьшить максимальное число соединений, это уменьшит максимальный размер используемой памяти. Буфер InnoDB у вас заполнен на 100%, так что его можно еще увеличить

А стоит ли? Может оставить как есть - то есть 2-е разные системы - я читал что MyISAM - шустрее в определенных местах - так пусть и остается так как в ней хранятся данные в основном на чтение - просто сократить размер выделяемой памяти или я ошибаюсь?

А так же вопрос: на что повлияет и где выставляется ограничение соединений?
Не может ли так получится что может не хватить количество соединений пользователю (из-за не оптимизированных модулей создающих нагрузку на базу огромным количеством запросов) ?
 
а как можно это ограничить скажем до 2-х Гигов?

просто написав так - верно? синтаксис правильный?:
query_cache_size=256М
join_buffer_size=18М

да это верно. После этого перезагрузите mysql (service mysql stop, service mysql start)


а как можно это ограничить скажем до 2-х Гигов?

А стоит ли? Может оставить как есть - то есть 2-е разные системы - я читал что MyISAM - шустрее в определенных местах - так пусть и остается так как в ней хранятся данные в основном на чтение - просто сократить размер выделяемой памяти или я ошибаюсь?

Для PrestaShop рекомендуется InnoDB. Вы можете конвертировать таблицы MyISAM в InnoDB с помощью этого сценария. Установите тайм-аут до 10-20 мин для большого база данных

PHP:
<?php
// connect database
    $dbhost = 'localhost';
    $dbuser = 'user';
    $dbpass = 'pass';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
    $dbname = 'database_name';
    mysql_select_db($dbname);
// code here
    $sql = "SHOW tables";
    $rs = mysql_query($sql);
    while($row = mysql_fetch_array($rs))
    {
        $tbl = $row[0];
        $sql = "ALTER TABLE $tbl ENGINE=INNODB";
        mysql_query($sql);
    }
?>
 
У вас в конфиге этот параметр может быть назван query-cache-size. 256М это может быть ваше текущее значение. Нужно выставить больше

На один запрос к скрипту создается одно соединение (если модуль использует стандартный способ подключения). Так что количество соединений зависит от количества одновременных запросов к сайту. 7.5G это максимальное количество памяти, которое может быть занято. Рассчитывается как размер буферов*количество соединений. Текущее использование памяти у вас 2.5G. Если будет занято больше доступной на сервере памяти, то что-то уйдет в своп.

Часть таблиц у вас в MyISAM не потому, что так быстрее, а потому что создавались в старой версии престы. Вы можете конвертировать в InnoBD таблицы, в которые часто происходит запись, а в MyISAM - те, которые в основном чтение
 
Для PrestaShop рекомендуется InnoDB. Вы можете конвертировать таблицы MyISAM в InnoDB с помощью этого сценария. Установите тайм-аут до 10-20 мин для большого база данных
База небольшая - около 200-т мегабайт
где нужно запускать этот скрипт?

У вас в конфиге этот параметр может быть назван query-cache-size. 256М это может быть ваше текущее значение. Нужно выставить больше
да нашел его - увеличу например до:
query_cache_size=512М
join_buffer_size=32М

эти параметры относятся только к MyISAM ? или ко всей базе вообще?
если я перейду от одного формата базы к другому то разумеется они уже будут не требоваться - так?

А так же нужно увеличить будет буфер у InnoDB
если вот эти строки добавить в файл конфигурации - этого будет достаточно или нужно будет еще что то добавить?
# CACHES AND LIMITS #
tmp-table-size = 32M
max-heap-table-size = 32M
query-cache-type = 0
query-cache-size = 0
max-connections = 500
thread-cache-size = 50
open-files-limit = 65535
table-definition-cache = 4096
table-open-cache = 4096

# INNODB #
innodb-flush-method = O_DIRECT
innodb-log-files-in-group = 2
innodb-log-file-size = 256M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table = 1
innodb-buffer-pool-size = 2G


Так же интересует все таки ограничение на количество соединений. Какой же параметр все таки выставить чтобы память не перегружалась и не вешали сервер запросами пользователи (например те кто сканирует сайт (парсит) или боты) ?
И где этот параметр выставляется?
 
И еще - заметил интересный момент по синтаксису в файле конфигурации
почему в одном сулчае пишется так: query_cache_size=512М
а в другом так query-cache-size=512М

И вроде как и в одном и в другом случае - это правильно!
Не будет ли путаницы у сервера - если в одном случае написать команды через "-" а в другом через "_" ?
 
Перевел базу в innodb
переделал файл конфигурации - но при новом файле отказался сервис MySQL стартовать - где в нем допущена ошибка - ума не приложу - вроде стандартно - убрал некоторые строки и добавил новые - вот файл :
#
# 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
# Для просмотра ссылки Войди или Зарегистрируйся

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0

[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /var/tmpfs
lc-messages-dir = /usr/share/mysql
skip-external-locking
bind-address = 127.0.0.1
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#
# * Fine Tuning
#
key_buffer_size = 256M
max_join_size = 1000000
max_allowed_packet = 256M
thread_stack = 512K
thread_cache_size = 50

myisam-recover = BACKUP
thread_concurrency = 8

query_cache_limit = 2M
query_cache_size = 256M

#myisam_sort_buffer_size = 64M
tmp_table_size = 256M
max_heap_table_size = 256M

table_open_cache = 4096
sort_buffer_size = 512M
read_buffer_size = 16M
read_rnd_buffer_size = 8M

join_buffer_size = 32M
open_files_limit = 4096

max_sort_length = 512

#max_connections = 500

# INNODB #
innodb_flush_method = O_DIRECT
innodb_log_buffer_size = 8M
innodb-log-file-size = 256M
innodb_log_files_in_group = 2
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1
innodb_buffer_pool_size = 2G
innodb_additional_mem_pool_size = 20M


#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
#
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# Here you can see queries with especially long duration

log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 3

#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem



[mysqldump]
quick
quote-names

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]

#
# * 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/
 
Назад
Сверху