Перейти к содержанию

Рекомендуемые сообщения

После достижения порога в 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
 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, markimax сказал:

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

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

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

 

[!!] Joins performed without indexes: 3721

 

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

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
23 минуты назад, snastik сказал:

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

 


[!!] Joins performed without indexes: 3721

 

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

 

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

Модули ?

Фильтры ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
30 минут назад, markimax сказал:

 

Фильтры ?

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1.5.5.1.1

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

 

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

 

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

Изменено пользователем lavka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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)

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, lavka сказал:

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.