Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Скорость работы и mysqltuner


Recommended Posts

После достижения порога в 30-40 непрерывных посетителей, загрузка сервера начинает превышать разумные значения (2 ядра, 4,5 ГГц). Прогнал mysqltuner, он советует:

-------- Storage Engine Statistics -------------------------------------------
[--] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 75M (Tables: 264)
[--] Data in InnoDB tables: 2M (Tables: 20)
[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
[!!] Total fragmented tables: 4

-------- Security Recommendations  -------------------------------------------
[OK] All database users have passwords assigned

-------- Performance Metrics -------------------------------------------------
[--] Up for: 7d 4h 58m 54s (20M q [32.377 qps], 249K conn, TX: 191B, RX: 9B)
[--] Reads / Writes: 96% / 4%
[--] Total buffers: 624.0M global + 3.6M per thread (120 max threads)
[OK] Maximum possible memory usage: 1.0G (35% of installed RAM)
[OK] Slow queries: 0% (170/20M)
[OK] Highest usage of available connections: 24% (29/120)
[OK] Key buffer size / total MyISAM indexes: 32.0M/19.5M
[OK] Key buffer hit rate: 100.0% (26B cached / 61K reads)
[OK] Query cache efficiency: 64.9% (11M cached / 18M selects)
[!!] Query cache prunes per day: 954
[OK] Sorts requiring temporary tables: 0% (1K temp sorts / 64M sorts)
[!!] Joins performed without indexes: 3721
[OK] Temporary tables created on disk: 22% (197K on disk / 868K total)
[OK] Thread cache hit rate: 99% (1K created / 249K connections)
[OK] Table cache hit rate: 32% (797 open / 2K opened)
[OK] Open file limit used: 24% (1K/4K)
[OK] Table locks acquired immediately: 99% (42M immediate / 42M locks)
[OK] InnoDB data size / buffer pool: 2.1M/64.0M

-------- Recommendations -----------------------------------------------------
General recommendations:
    Run OPTIMIZE TABLE to defragment tables for better performance
    Enable the slow query log to troubleshoot bad queries
    Increasing the query_cache size over 128M may reduce performance
    Adjust your join queries to always utilize indexes
Variables to adjust:
    query_cache_size (> 256M) [see warning above]
    join_buffer_size (> 2.0M, or always use indexes with joins)

В свое время настроил вот так:

tmp_table_size = 512M
max_heap_table_size = 256M
key_buffer_size = 32M
innodb_buffer_pool_size = 64m
innodb_additional_mem_pool_size = 8M
innodb_log_buffer_size = 8M
query_cache_size = 256M

max_connections = 120
read_buffer_size = 128K
read_rnd_buffer_size = 256K
sort_buffer_size = 1M
thread_stack = 256K
join_buffer_size = 2M

max_user_connections=120
wait_timeout=60
interactive_timeout=50
long_query_time=5
table_cache = 2048
thread_cache_size = 4
innodb_file_per_table
 

Посоветуете что-нибудь?

Link to post
Share on other sites

Количество товаров ?
Категорий ?

Версия opencart ?
Тема ?
Модули ?
И можете готовить бюджет :) на оптимизацию скорости

Link to post
Share on other sites
2 минуты назад, markimax сказал:

Количество товаров ?
Категорий ?

Версия opencart ?
Тема ?
Модули ?
И можете готовить бюджет :) на оптимизацию скорости

Марк, там же все написано

 

[!!] Joins performed without indexes: 3721

 

В этом и весь косяк!
Дело не в количестве товаров а в количестве одновременных коннектов к базе с запросами без индексов, вот в пики оно и убивает систему.

  • +1 1
Link to post
Share on other sites
23 минуты назад, snastik сказал:

Марк, там же все написано

 


[!!] Joins performed without indexes: 3721

 

В этом и весь косяк!
Дело не в количестве товаров а в количестве одновременных коннектов к базе с запросами без индексов, вот в пики оно и убивает систему.

 

26 минут назад, markimax сказал:

Модули ?

Фильтры ?

Link to post
Share on other sites
30 минут назад, markimax сказал:

 

Фильтры ?

Если человек способен запустить mysql тюнер - у него должно хватить скила запустить Лог медленных запросов. не использующих индексы.

Ну и там сразу будет видно.

Link to post
Share on other sites

1.5.5.1.1

Стоит модуль FilterPro, от него, кажется, бывает большая нагрузка. Но далеко не все пользуются этим фильтром, поэтому смело его винить не стану.

 

10к товаров, 200 категорий

 

Скилла на лог медленных запросов не хватает. Напишите, пожалуйста, как сделать его. Или речь о db_log.php? Да, сейчас его подкину.

Edited by lavka
Link to post
Share on other sites

3 минуты назад, lavka сказал:

Хотя нет, стану винить именно FilterPro от ruslan.shv и поиск Search with morphology and relevance v1.1 от sv2109. Ну, еще иногда примешивается Simple оформление, но это мелочи.

 


2018-01-30 21:32:06 - 4.66103 |    85 | /index.php?route=module/filterpro/getproducts

2018-01-30 21:32:06 - 0.13152 |    93 | /index.php?route=checkout/simplecheckout&group=0
2018-01-30 21:32:07 - 0.35223 |   124 | /
2018-01-30 21:32:07 - --------------------
2018-01-30 21:32:08 - 2.36636 SELECT DISTINCT pa.text, a.`attribute_id`, ad.`name`, at.`tooltip`, ag.attribute_group_id, agd.name as attribute_group_name, agt.tooltip as attribute_group_tooltip FROM `oc_product_attribute` pa LEFT JOIN oc_attribute a ON(pa.attribute_id=a.`attribute_id`)  LEFT JOIN oc_attribute_description ad ON(a.attribute_id=ad.`attribute_id`)  LEFT JOIN oc_attribute_group ag ON(ag.attribute_group_id=a.`attribute_group_id`)  LEFT JOIN oc_attribute_tooltip at ON(a.attribute_id=at.`attribute_id` AND at.`language_id`='1')  LEFT JOIN oc_attribute_group_tooltip agt ON(ag.attribute_group_id=agt.`attribute_group_id` AND agt.`language_id`='1')  LEFT JOIN oc_attribute_group_description agd ON(agd.attribute_group_id=ag.`attribute_group_id`)  LEFT JOIN oc_product p ON(p.product_id=pa.`product_id`)  LEFT JOIN oc_product_to_category p2c ON(p.product_id=p2c.product_id)  LEFT JOIN oc_category c ON (p2c.category_id=c.category_id) LEFT JOIN oc_product_to_store p2s ON(p.product_id=p2s.product_id)  WHERE  p.status = '1' AND p.date_available <= NOW() AND p2s.store_id =0 AND p.quantity > 0 AND (p2c.category_id = '64' OR c.parent_id = '64') AND pa.language_id = '1' AND ad.language_id = '1' AND agd.language_id = '1' ORDER BY ag.sort_order, agd.name, a.sort_order, ad.name, pa.text

2018-01-30 21:32:08 - 0.48538 |     1 | /web/catalog/controller/module/filterpro.php(214)
2018-01-30 21:32:08 - 2.36636 |     1 | /web/catalog/controller/module/filterpro.php(250)

 

 

Link to post
Share on other sites

Как я и предполагал - фильтр :)

Что можно сказать ... выключайте фильтр и проверяйте
Потом делайте выводы

Link to post
Share on other sites

Выводы сделаны, фильтр тормозит. Какое может быть решение-то?)

Link to post
Share on other sites

1 час назад, lavka сказал:

Выводы сделаны, фильтр тормозит. Какое может быть решение-то?)

Если фильтр принципиален

1. Обратиться к автору его за оптимизацией запросов

2. Уменьшить количество фильтруемых опций + п.3

3. Найти быструю альтернативу

4. не использовать фильтры а грамотно изменить архитектуру категорий, подкатегорий (т е сделать "фильтрацию" подкатегориями)

Link to post
Share on other sites

Посмотрите сюда, он проверит и добавит необходимые индексы в стандартные таблицы. Если не поможет - стучитесь, да и вообще - стучитесь.

Link to post
Share on other sites

Запустил SuperDruid и вроде полегчало втрое, но все равно, конечно, не фонтан. А есть какие-то фильтры побыстрее?

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.