2012-02-10 2 views
3

Magento를 사용 중이며 사이트 속도가 느립니다. 서버에 매우 가벼운 부하가 있습니다. 나는 CPU, 디스크 I/O를 확인했으며, 메모리는 항상 30 % 미만의 가볍다. APC 캐싱이 활성화되었습니다. 서버를 모니터링하기 위해 새 유물을 사용하고 있으며 문제는 매우 명확하게 삽입/업데이트됩니다.느린 MySQL InnoDB 삽입 및 업데이트

모든 삽입 및 업데이트 명령문의 처리 속도가 느려졌습니다. SELECT가 빠릅니다. 테이블에 대한 아주 간단한 삽입/업데이트는 응용 프로그램 또는 명령 줄 mysql에서 실행 되든 2-3 초가 걸립니다.

예 :

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로 변경했습니다.

이 서버의 움직임은 매우 밝습니다. 1GB RAM이있는 dv 박스입니다. 비슷한 설치에서 5x로드로 100x를 더 잘 수행하는 magento 설치가 있습니다.

모든 쿼리를 2 초 이상 로깅하기 시작했으며 모든 삽입 및 전체 텍스트 검색 인 것으로 보입니다.

누구든지 의견이 있으십니까? 제 '8', 그래서 MySQL의 변환 값이 아닌 char/varcharint 인 - (process_id='8')는 :

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 ; 
+1

EAV 모델에서 Magento는 느린 디자인입니다. – FMaz008

+0

EAV 모델의 속도가 느린 것을 알고 있습니다. 이 문제는 EAV 테이블과 관련이 없습니다. magento는 다른 서버에서 잘 실행됩니다. – Brian

+0

그것은 내 금요일 트롤이었습니다;) 느린 것으로 의심되는 쿼리에 대해 EXPLAIN을 시도한 적이 있습니까? – FMaz008

답변

0

첫째

여기에 나타난 구조이다.

내 시스템에서 users.last_active_time을 업데이트하는 데 오랜 시간 (1 초 이상)이 걸렸습니다.

그 이유는 오랫동안 수행해야하는 쿼리가 몇 번 있었기 때문입니다. 나는 users 테이블을 위해 그것들을 합쳤다. 이로 인해 읽을 테이블이 차단되었습니다. SELECT에 의한 데스 락.

쿼리를 다음에서 다시 작성했습니다. JOIN : 하위 쿼리 및 설명이 사라졌습니다.