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

lightman555

Гуру форума
Регистрация
7 Мар 2013
Сообщения
337
Реакции
64
Конфигурация сервера:
Память: 8 GB
Процессор: 2 ядра
Дисковая система: 50 GB SSD

Два магазина на престе - основной на 1.4.11

Уникальных посетителей за сутки 600-1000
подключен мемкешед и выделено под него 2Гига оперативки
периодически возникает бешеная нагрузка на MySQL в виду большого числа запросов.
анализ кеширования базу говорит, что база закеширована плохо и только 5-10% её кеша используется.
Изучая долго интернет создал файл конфигурации для 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 = 16M
key_buffer = 1024M
max_join_size = 1000000
max_allowed_packet = 256M
thread_stack = 512K
thread_cache_size = 50
#table_open_cache = 6000
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover = BACKUP
#max_connections = 100
table_cache = 60000
thread_concurrency = 5
#
# * Query Cache Configuration
#

query_cache_limit = 2M
query_cache_size = 256M

table_cache = 512
sort_buffer = 8M
myisam_sort_buffer_size = 256M
tmp_table_size = 256M
max_heap_table_size = 128M

read_buffer_size = 16M
read_rnd_buffer_size = 4M

sort_buffer_size = 2M
join_buffer_size = 18M
open_files_limit = 4096
table_open_cache = 4096
max_sort_length = 512

#
# * 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
max_allowed_packet = 256M

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

[isamchk]
key_buffer = 32M

#
# * 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/
 
Это все параметры для myisam, скорее всего у вас используется innodb, поэтому кэширование нужно настраивать для этого движка (например innodb_buffer_pool_size). А если не используется, то лучше базу перевести на него.

Создать конфиг можно здесь Для просмотра ссылки Войди или Зарегистрируйся
Потом использовать для оптимизации этот скрипт Для просмотра ссылки Войди или Зарегистрируйся
 
В данном случае у меня в админке конфигурация базы такая (есть и то и то:(
Движок MySQL
Таблица Движок
ps_access MyISAM
ps_accessory MyISAM
ps_address MyISAM
ps_address_format MyISAM
ps_alias MyISAM
ps_attachment MyISAM
ps_attachment_lang MyISAM
ps_attribute MyISAM
ps_attribute_group MyISAM
ps_attribute_group_lang MyISAM
ps_attribute_impact MyISAM
ps_attribute_lang MyISAM
ps_bft_content MyISAM
ps_blockarticles InnoDB
ps_blockarticles_data InnoDB
ps_blockcontact MyISAM
ps_blockfaq InnoDB
ps_blockfaq_data InnoDB
ps_blockguestbook InnoDB
ps_blocknews InnoDB
ps_blocknews_data InnoDB
ps_blockplpanel MyISAM
ps_blockplpanel_lang MyISAM
ps_blockshopreviews InnoDB
ps_blog_category InnoDB
ps_blog_category2post InnoDB
ps_blog_category_data InnoDB
ps_blog_comments InnoDB
ps_blog_post InnoDB
ps_blog_post_data InnoDB
ps_carrier MyISAM
ps_carrier_group MyISAM
ps_carrier_lang MyISAM
ps_carrier_zone MyISAM
ps_cart MyISAM
ps_cart_discount MyISAM
ps_cart_product MyISAM
ps_category MyISAM
ps_category_group MyISAM
ps_category_lang MyISAM
ps_category_product MyISAM
ps_cms MyISAM
ps_cms_block MyISAM
ps_cms_block_lang MyISAM
ps_cms_block_page MyISAM
ps_cms_category MyISAM
ps_cms_category_lang MyISAM
ps_cms_lang MyISAM
ps_compare MyISAM
ps_compare_product MyISAM
ps_configuration MyISAM
ps_configuration_lang MyISAM
ps_connections MyISAM
ps_connections_page MyISAM
ps_connections_source MyISAM
ps_contact MyISAM
ps_contact_lang MyISAM
ps_country MyISAM
ps_country_lang MyISAM
ps_county MyISAM
ps_county_zip_code MyISAM
ps_currency MyISAM
ps_customer MyISAM
ps_customer_group MyISAM
ps_customer_message MyISAM
ps_customer_thread MyISAM
ps_customization MyISAM
ps_customization_field MyISAM
ps_customization_field_lang MyISAM
ps_customized_data MyISAM
ps_date_range MyISAM
ps_delivery MyISAM
ps_discount MyISAM
ps_discount_category MyISAM
ps_discount_lang MyISAM
ps_discount_type MyISAM
ps_discount_type_lang MyISAM
ps_editorial MyISAM
ps_editorial_lang MyISAM
ps_employee MyISAM
ps_faq MyISAM
ps_faq_lang MyISAM
ps_feature MyISAM
ps_feature_lang MyISAM
ps_feature_product MyISAM
ps_feature_value MyISAM
ps_feature_value_lang MyISAM
ps_group MyISAM
ps_group_lang MyISAM
ps_group_reduction MyISAM
ps_gsitemap_sitemap InnoDB
ps_guest MyISAM
ps_help_access MyISAM
ps_hook MyISAM
ps_hook_module MyISAM
ps_hook_module_exceptions MyISAM
ps_image MyISAM
ps_image_lang MyISAM
ps_image_type MyISAM
ps_import_match MyISAM
ps_lang MyISAM
ps_layered_category MyISAM
ps_layered_filter InnoDB
ps_layered_filter_shop InnoDB
ps_layered_friendly_url InnoDB
ps_layered_indexable_attribute_group InnoDB
ps_layered_indexable_attribute_group_lang_value InnoDB
ps_layered_indexable_attribute_lang_value InnoDB
ps_layered_indexable_feature InnoDB
ps_layered_indexable_feature_lang_value InnoDB
ps_layered_indexable_feature_value_lang_value InnoDB
ps_layered_price_index InnoDB
ps_layered_product_attribute InnoDB
ps_linksmenutop MyISAM
ps_linksmenutop_lang MyISAM
ps_log MyISAM
ps_mailalert_customer_oos MyISAM
ps_manufacturer MyISAM
ps_manufacturer_lang MyISAM
ps_memcached_servers MyISAM
ps_message MyISAM
ps_message_readed MyISAM
ps_meta MyISAM
ps_meta_lang MyISAM
ps_module MyISAM
ps_module_country MyISAM
ps_module_currency MyISAM
ps_module_group MyISAM
ps_operating_system MyISAM
ps_order_detail MyISAM
ps_order_discount MyISAM
ps_order_history MyISAM
ps_order_message MyISAM
ps_order_message_lang MyISAM
ps_order_return MyISAM
ps_order_return_detail MyISAM
ps_order_return_state MyISAM
ps_order_return_state_lang MyISAM
ps_order_slip MyISAM
ps_order_slip_detail MyISAM
ps_order_state MyISAM
ps_order_state_lang MyISAM
ps_order_tax MyISAM
ps_orders MyISAM
ps_pack MyISAM
ps_page MyISAM
ps_page_type MyISAM
ps_page_viewed MyISAM
ps_payment_cc MyISAM
ps_paypal_order MyISAM
ps_pl_easyfooter MyISAM
ps_pl_easyfooter_lang MyISAM
ps_prodquestions InnoDB
ps_product MyISAM
ps_product_attachment MyISAM
ps_product_attribute MyISAM
ps_product_attribute_combination MyISAM
ps_product_attribute_image MyISAM
ps_product_comment MyISAM
ps_product_comment_criterion MyISAM
ps_product_comment_criterion_category MyISAM
ps_product_comment_criterion_lang MyISAM
ps_product_comment_criterion_product MyISAM
ps_product_comment_grade MyISAM
ps_product_country_tax MyISAM
ps_product_download MyISAM
ps_product_group_reduction_cache MyISAM
ps_product_lang MyISAM
ps_product_sale MyISAM
ps_product_tag MyISAM
ps_profile MyISAM
ps_profile_lang MyISAM
ps_quick_access MyISAM
ps_quick_access_lang MyISAM
ps_range_price MyISAM
ps_range_weight MyISAM
ps_referrer MyISAM
ps_referrer_cache MyISAM
ps_required_field MyISAM
ps_reviewsnippets MyISAM
ps_scene MyISAM
ps_scene_category MyISAM
ps_scene_lang MyISAM
ps_scene_products MyISAM
ps_search_engine MyISAM
ps_search_index MyISAM
ps_search_word MyISAM
ps_shiptopay MyISAM
ps_specific_price MyISAM
ps_specific_price_priority MyISAM
ps_state MyISAM
ps_stock_mvt MyISAM
ps_stock_mvt_reason MyISAM
ps_stock_mvt_reason_lang MyISAM
ps_store MyISAM
ps_subdomain MyISAM
ps_supplier MyISAM
ps_supplier_lang MyISAM
ps_tab MyISAM
ps_tab_lang MyISAM
ps_tag MyISAM
ps_tax MyISAM
ps_tax_lang MyISAM
ps_tax_rule MyISAM
ps_tax_rules_group MyISAM
ps_timezone MyISAM
ps_web_browser MyISAM
ps_webservice_account MyISAM
ps_webservice_permission MyISAM
ps_zone MyISAM

-------------
А стоит ли переводить - то есть как это скажется на скорость работы базы или на что это вообще скажется?
И как правильно перевести?
И опять же если переводить тогда файл конфигурации что я выложил придется существенно изменить?
Подскажите пожалуйста как лучше поступить, а то давно уже в этом барахтаюсь а толком нигде ответа не могу найти
 
А стоит ли переводить - то есть как это скажется на скорость работы базы или на что это вообще скажется?
С версии 1.5 по умолчанию создаются таблицы InnoDB. Теоретически немного быстрее
И как правильно перевести?
Для просмотра ссылки Войди или Зарегистрируйся
И опять же если переводить тогда файл конфигурации что я выложил придется существенно изменить?
Конфиг все равно нужно будет переделать, по крайней мере добавить настройки для InnoDB
Создайте новый конфиг здесь Для просмотра ссылки Войди или Зарегистрируйся и проверьте, что бы пути остались в нем старыми
 
То есть если я все правильно понимаю - у меня не кеширует нормально InnoDB
и если ввести хотя бы такие параметры то ситуация должна улучшиться?
innodb_buffer_pool_size = 512M
innodb_additional_mem_pool_size = 16M
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 2
innodb_thread_concurrency = 8
 
И еще вопрос - если у меня используется мемкеш то имеет ли вообще смысл кешировать базу меняя конфигурацию в файле?

Создайте новый конфиг здесь Для просмотра ссылки Войди или Зарегистрируйся и проверьте, что бы пути остались в нем старыми
там к сожалению все на английском и нужно регистрироваться, а я не силен в английском к сожалению
 
Попробуйте добавит в конфиг и посмотрите что получится.
Можно переводить гугл переводчиком
 
а как можно оценить изменения не на глаз и понять эффективность работы кеша?
а так же кто то говорил что для престы вроде как кеширование базы даже вредно так как стоит мемкешед?
 
При помощи Apache Benchmark
Попробуйте с отключенным Memcache. Иногда из-за него работает медленней
 
innodb_thread_concurrency = 8

По умолчанию, innodb_thread_concurrency = 0. Это на самом деле самая лучшая установка. Это означает бесконечное параллелизм. Это позволяет двигателю хранения InnoDB, чтобы определить наилучший количество параллелизма билетов для запуска и адрес. Установка в отличное от нуля фактически может задушить InnoDB или задушить ОС если не установлен должным образом.

Движок MySQL
Таблица Движок

Лучше использовать Движок InnoDB для всех tаблица Движок.
 
Назад
Сверху