Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


lavka

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
 

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

Надіслати
Поділитися на інших сайтах


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

Версия 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. не использовать фильтры а грамотно изменить архитектуру категорий, подкатегорий (т е сделать "фильтрацию" подкатегориями)

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.