Оптимизация быстродействия: время выполнения запросов.

#
Оптимизация быстродействия: время выполнения запросов.
Пытаюсь ускорить работу сайта на HostCMS 5.9.34 "Мой сайт". Страницы отдает долговато - в среднем более 3-х секунд.

Сайт крутится на VPS (сервер обслуживает только его).
Параметры VPS:
CPU 4x2660MHz (Средняя загрузка - 12%, в пике - 60%)
RAM 2048 MB (средняя загрузка - 36%, в пике - 76%)

Посещаемость в сутки в среднем - 1к хостов, 3к хитов.

Считаю, для такого соотношения ресурсов сервера и посещаемости 3 с лишним сек на отдачу страницы - это много.

Что я пытался сделать:

1) Смотрю отладочную информацию:
Цитата:
Время выполнения: 3.842 с, из них
время загрузки модулей: 0.188 с;
время генерации содержания страницы: 3.741 с;
время соединения с СУБД: 0.001 с;
время выбора БД: 0.000 с;
время выполнения запросов: 3.365 с;
время обработки XML: 0.020 с.
Использовано памяти: 16.41 Мб
Количество запросов: 147.
Компрессия: Отключено.
Кэширование: Отключено.


2) Включаю кеширование запросов Mysql.
После суточного пробега состояние кеша вот такое:

Цитата:
Qcache_free_blocks: 82
Qcache_free_memory: 556141336
Qcache_hits: 1781231
Qcache_inserts: 376481
Qcache_lowmem_prunes: 0
Qcache_not_cached: 217603
Qcache_queries_in_cache: 5343
Qcache_total_blocks: 10931


К моему удивлению, время генерации страниц сократилось на 10%, не более.

3) Смотрю, что делает mysql во время генерации страниц. Делает всегда одно и то же: выполняет 1-2 таких вот запросов:
Цитата:
Query SELECT `shop_items_catalog_table`.`shop_groups_id`, count(`shop_items_catalog_table`.`shop_items_catalog_item_id`) a...

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

Внимание вопрос: Как еще поднять скорость выполнения запросов?
Модератор
#
Re: Оптимизация быстродействия: время выполнения запросов.
1. Выполнить оптимизацию таблиц через ЦА.
2. Установите последнее обновление.
3. Выполните оптимизацию, обратите внимание, примеры даны для весьма слабого VPS и Вам необходимо увеличить параметры в соответствии с рекомендациями http://www.hostcms.ru/documentation/server/mysql/#optimization
4. Уточните время выполнения самых долго выполняющихся запросов.
#
Re: Оптимизация быстродействия: время выполнения запросов.
Цитата:

1. Выполнить оптимизацию таблиц через ЦА.
2. Установите последнее обновление.
3. Выполните оптимизацию,


Всё сделал, время выполнения запросов не изменилось: те же самые 3,2-3,5 сек.
Достаточно долго эксперементировал с настройками my.cnf - хуже сделать получается, лучше - нет.

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


key_buffer_size = 96M
key_cache_division_limit= 70

max_allowed_packet = 1M
table_open_cache = 1024
thread_concurrency = 8

max_heap_table_size     = 32M
tmp_table_size          = 32M

sort_buffer_size = 32M
read_buffer_size = 4M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 4M

net_buffer_length = 2K
thread_stack = 128K
query_cache_size = 256M
thread_cache_size = 16
query_cache_type=1
query_cache_limit=4048576
max_connections = 650



Цитата:
4. Уточните время выполнения самых долго выполняющихся запросов.

Я не знаю, как посмотреть время выполняющихся запросов, mytop этого нормально не кажет, а других утилит не знаю.

Но я включил логирование запросов, которые выполняются дольше 1 секунды, вот кусочек лога:

Цитата:


[root@145871-20001 ~]# tail /tmp/mysql-slow-queries.log
SELECT `shop_items_catalog_table`.`shop_groups_id`,
                count(`shop_items_catalog_table`.`shop_items_catalog_item_id`) as count

        FROM `shop_items_catalog_table`

        WHERE `shop_items_catalog_table`.`shop_shops_id` = '1'
        AND `shop_items_catalog_table`.`shop_items_catalog_modification_id` = 0
         AND shop_items_catalog_table.shop_items_catalog_is_active = '1' AND (shop_items_catalog_table.shop_items_catalog_putend_date >= '2012-05-16 12:14:05'
            OR shop_items_catalog_table.shop_items_catalog_putend_date ='0000-00-00 00:00:00') AND shop_items_catalog_table.shop_items_catalog_putoff_date <= '2012-05-16 12:14:05'
        GROUP BY shop_groups_id HAVING 1;

#
Re: Оптимизация быстродействия: время выполнения запросов.
Опытным путем установил, что самые медленные запросы выполняются более 1, но не более 2-х секунд.

Модератор
#
Re: Оптимизация быстродействия: время выполнения запросов.
Запросы полностью со временем выполнения можно посмотреть в клиентском разделе, после авторизации в ЦА. Для этого в разделе "Константы" создайте (если не создана) активную константу ALLOW_SHOW_SQL со значением true.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Оптимизация быстродействия: время выполнения запросов.
Сделал.

Получил другие показания, нежели в Mysql_slow_log.

Вот такие запросы исполняются наиболее медленно:

1.6024 сек: SELECT * FROM `shop_groups_table` WHERE `shop_groups_id` = '10744'
1.6183 сек: SELECT * FROM `shop_tax_table`;
1.6445 сек: SELECT * FROM `shop_groups_table` WHERE `shop_groups_id` = '8520'


Выполнение всех остальных запросов занимает 0.0001 - 0.0006 сек.
Модератор
#
Re: Оптимизация быстродействия: время выполнения запросов.
Leevoth,
пришлите запрос в поддержку с данными доступа в ЦА и ссылкой на эту тему.
#
Re: Оптимизация быстродействия: время выполнения запросов.
Очень помогли, спасибо.

Дело оказывается было в отсутствии параметра $param['xml_show_all_count_items_and_groups'] = false; в коде вывода интернет-магазина. Из-за чего происходил подсчет количества товаров в группах, который выполнялся так долго с учетом весьма немаленькой базы товаров.

Теперь страницы отдаются за 0,3-0,4 сек.

Всем спасибо!

#
Re: Оптимизация быстродействия: время выполнения запросов.
$param['xml_show_all_count_items_and_groups'] = false

Скажите где прописать этот параметр????

как посмотреть информацию после включения ALLOW_SHOW_SQL
dostavka
#
Re: Оптимизация быстродействия: время выполнения запросов.
dostavka писал(а):
$param['xml_show_all_count_items_and_groups'] = false

Скажите где прописать этот параметр????

В коде ТДС Инетрнет-магазин, перед вызовом метода ShowShop()

dostavka писал(а):
как посмотреть информацию после включения ALLOW_SHOW_SQL

RTFM! (здесь - стр.6-8)
Заказов не беру. Консультирую редко.
Авторизация