2011-01-20 8 views
2

우리는 약 2000 개의 작은 데이터베이스가있는 전용 MySQL 서버를 가지고 있습니다. (그것은 Drupal 다중 사이트 설치입니다 - 각 데이터베이스는 하나의 사이트입니다).MySQL 데이터베이스 사용 속도가 느림

처음으로 각 사이트를로드하면 첫 페이지를 반환하는 데 최대 30 초가 걸릴 수 있습니다. 그 후, 페이지는 수용 가능한 속도로 복귀합니다. 나는 이것을 스택을 통해 MySQL로 추적했다. 또한 명령 줄 mysql 클라이언트에 연결하면 연결이 빠르며 "dbname 사용"이 느리고 쿼리가 빠릅니다.

내 직감은 서버가 올바르게 구성되지 않아서 사용하지 않은 dbs가 캐시에서 떨어지는 등으로 인해 발생하지만이 경우 어떤 캐시 또는 설정이 적용되는지 잘 모르겠습니다.

내가 시도한 한 가지는 innodb_buffer_pool 크기입니다. 이것은 기본 8M로 설정되었습니다. 나는 더 나은 성능을 제공해야한다고 지적한대로 512MB로 (시스템에 2GB의 RAM이 있으며 추가 RAM을 사용할 수 있음) 시도했지만 시스템이 느리게 실행되어 이제 8MB로 돌아 왔습니다.

읽어 주셔서 감사합니다.

+0

단일 사용자를 사용하여 모든 데이터베이스에 액세스하거나 여러 사용자를 사용하고 있습니까? – RJD22

+0

8에서 512MB 사이 어딘가에 시도해 보셨나요? 그것은 약간의 트레이드 오프 –

+0

'2000 데이터베이스', 느린'사용 dbname' - 당신은 모든 2000 데이터베이스에 대해 단일 사용자를 사용하고 있습니까? – ajreal

답변

4

2000 데이터베이스의 경우 table cache 설정을 조정해야합니다. 이 캐시에는 많은 캐시 누락이 있습니다.

mysqltunner 및/또는 tunning_primer.sh를 사용하여 설정과 관련된 잠재적 문제에 대한 기타 정보를 얻으십시오.

이제 drupal은 데이터베이스 집약적 인 작업을하고, Drupal 설치를 확인합니다. 요청이 너무 많을 수 있습니다.

innodb_buffer_pool_size에 관해서는, 작은 버퍼 (8Mb)로 페이지 매김 캐시를 많이 잃어 버렸을 것입니다. 이상적인 크기는 모든 데이터와 인덱스 크기가이 버퍼와 2000 개의 데이터베이스에 들어갈 수있는 경우입니다. 물론 아주 작은 크기이지만 성장이 어려울 것입니다. MySQL 서버를 튜닝하는 것은 어렵다. MySQL이 너무 많은 RAM을 차지한다면 아파치는 충분한 RAM을 얻지 못할 것이다.

솔루션은 다음과 같습니다 당신이 DNS 이름으로하지만 IP
로 접속을하지 않는

  • 검사 (경우)
  • 는 별도의 서버
  • 에 더 많은 RAM을
  • 설정 MySQL의 구매
  • 설정을 조정하십시오.

Drupal의 경우 세션을 설정하지 마십시오. 그는 데이터베이스지만 memcache (당신은 RAM이 필요 하겠지만 MySQL에서는 더 좋을 것이다.)를위한 모듈이있다. 드루팔 (Drupal 7)을 사용하고 있다면 MySQL 대신 memcache에서 캐시 테이블의 일부를 설정하려고 할 수도 있습니다 (큰 캐시 테이블에서는 그렇게하지 마십시오).

편집 : 마지막으로, 나는 영구적 인 데이터베이스 연결을 사용하기 위해 Drupal을 수정하지 않았 으면 좋겠다. 어떤 모듈은이를 허용하거나 (자동으로 시도하는 오래된 드루팔 (drupal) 5를 가짐). 2000 데이터베이스를 사용하면 서버를 종료 할 수 있습니다. "너무 많은 연결"오류에 대한 mysql 오류 로그를 확인하십시오.

+0

감사합니다. @regilero. memcache를 설정 했으므로 초기 지연 후에 시스템이 훨씬 응답 성있게 만들었지 만 지연은 여전히 ​​존재합니다. 나는 당신의 MySQL 튜닝 제안을 전에 줄 것이다 - 나는 그것이 지금 버퍼라고 확신한다. – rupertj

0

안녕하세요 Rupertj 내가 읽고있는 테이블 유형 innodb를 사용하고 계시겠습니까?

innodb 테이블은 myisam 테이블보다 조금 느리지 만 큰 문제는 아닌 것 같아요. 드루팔 (drupal) 시스템을 사용하고 있습니다. 워드 프레스와 같은 일종의 멀티 사이트입니다. 체계?

그렇다면 유감 스럽지만 이런 유형의 시스템은 플러그인이나 다른 것을 설치할 때마다 테이블과 물론 데이터베이스에 데이터베이스가 커지므로 매우 느리게 변경 될 수 있습니다. 나는 Drupal을 사용하지 않고 Word-Press 블로그 시스템을 사용하여 스스로 경험했습니다. 내게는 내 친구들에게 악몽이었습니다.

그 이후 나는 프로젝트를 포기했습니다 ... 그리고 내 조언은 당신에게 있습니다. drupal 시스템에 많은 플러그인을 설치하지 마십시오.

나는이 조언이 당신을 도울 것을 희망한다.

+0

Drupal과 아무런 관련이 없기 때문에이 조언이 도움이되기를 바랍니다. – ajreal

+0

좋아요, 어쨌든 행운을 빕니다. – B4NZ41

0

이것은 MYSQL이 아닌 Drupal의 캐싱 문제와 같습니다. 데이터베이스 서버를 망치는 몇 가지 매우 무거운 쿼리 또는 많은 쿼리, 작은 쿼리 또는 여러 쿼리가있는 것으로 보입니다. 일단 이것이 완료되면, Drupal은 여러 캐싱 레이어에이를 캐시합니다. 그 다음에는 페이지를 구축하는 데 필요한 쿼리가 하나 또는 거의 없습니다. 처음 엔 천천히, 그 후 빠르다.

+1

필자는 그렇게 생각하지 않습니다. 시스템의 사이트 (따라서 데이터베이스) 수가 늘어남에 따라 지연이 증가했기 때문입니다. 유일한 차이점은 배포 된 사이트의 수는 개발 또는 테스트 환경에서 문제가되지 않는다는 것입니다. – rupertj

0

원인을 판별하려면 프로필을 작성해야하지만 표 캐시는 가능성이있는 용의자처럼 보입니다.

그러나 영구 연결에주의해야합니다.이 연결은 절대적으로 항상 꺼야합니다 (예 : 사용자뿐 아니라 모든 사용자). 아파치/PHP 퍼시 스턴트 커넥션은 여러분과 다른 모든 사람들이 일반적으로없이 할 수있는 비관감입니다.

관련 문제