Я использую magento и у меня много медлительности на сайте.На сервере очень и очень низкая нагрузка.Я проверил, что процессор, дисковый ввод-вывод и память всегда доступны менее чем на 30%.Кэширование APC включено - я использую новую реликвию для мониторинга сервера, и проблема очень четко вставлена / обновлена.
Я выделил медлительность для всех операторов вставки и обновления.ВЫБРАТЬ быстро.Очень простая вставка / обновление таблиц занимает 2-3 секунды, независимо от того, запускается ли это из моего приложения или из командной строки mysql.
Пример:
UPDATE `index_process` SET `status` = 'working', `started_at` = '2012-02-10 19:08:31' WHERE (process_id='8');
В этой таблице 9 строк, первичный ключ,и 1 индекс на нем.
Замедление происходит со всеми вставками / обновлениями.Я запустил mysqltuner и все выглядит хорошо.Кроме того, innodb_flush_log_at_trx_commit изменилось на 2.
Активность на этом сервере очень мала - это dv-бокс с 1 ГБ оперативной памяти.У меня есть установки magento, которые работают в 100 раз лучше при 5-кратной загрузке на аналогичной установке.
Я начал регистрировать все запросы в течение 2 секунд, и, похоже, все вставки и полнотекстовый поиск.
Любойесть предложения?
Вот структура таблицы:
CREATE TABLE IF NOT EXISTS `index_process` (
`process_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`indexer_code` varchar(32) NOT NULL,
`status` enum('pending','working','require_reindex') NOT NULL DEFAULT 'pending',
`started_at` datetime DEFAULT NULL,
`ended_at` datetime DEFAULT NULL,
`mode` enum('real_time','manual') NOT NULL DEFAULT 'real_time',
PRIMARY KEY (`process_id`),
UNIQUE KEY `IDX_CODE` (`indexer_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;