2014-06-30 1 views
4

며칠마다 MySQL RDS 인스턴스에서 CPU 및 DB 연결의 큰 스파이크에 해당하는 소수의 MySql 시간 초과 오류가 발생했습니다. 일반적으로 매우 빠른 쿼리입니다 (< 5ms). 갑자기 시간이 초과되었습니다.ASP.NET 웹 사이트의 연결 스파이크로 인한주기적인 MySql 시간 초과

이 시점에서 데이터베이스 작업은 1 분 정도면 매우 느립니다 (새 연결이 할당 될 가능성이 높습니다). 새로운 연결 수가 종종 두 배가되고 재활용되는 전체 연결 풀에 해당하는 것으로 보입니다.

타임 아웃이 많은 데이터베이스로드와 일치하지 않는 것 같습니다. CPU가 약 7 % 미만인 경우가 종종 있습니다 (약 12 %까지 증가합니다).

이러한 연결이 생성되면 이전 연결이 몇 시간 동안 계속 남아있는 것처럼 보입니다.

  • EC2 및 RDS
  • 연결 풀 재활용 사이에 가끔 네트워크 딸꾹질은 (그런 일이?) 서버
  • 자원 경합 모든 백업 :

    우리는 몇 가지 이론이 쿼리 (교착 상태 없음)

이 디버깅에 대한 도움은 매우 감사하겠습니다.

시스템 정보 :

  • 윈도우 2012 EC2 인스턴스
  • .NET 4.5
  • MySQL의 커넥터 6.8.3
  • 엔티티 프레임 워크 6.0.2
  • MySql.Data.Entities 6.8.3
  • MySql 5.6.12 (Amazon의 RDS에서 호스팅 됨)
,210
+0

문제가있을 때 PROCESS LIST에 표시되는 점은 무엇입니까? –

+0

연결 누출 같은 소리가납니다. 독자를 사용하지 마십시오. 직접 쓰지 않고 직접 독자, 연결 등을 사용하십니까? –

+0

다음과 같은 몇 가지 방법을 시도해 볼 수 있습니다 : a) "innodb 상태 표시". b) 이틀에 걸쳐 DB 연결 수 추세를 확인하십시오 - 꾸준히 올라가고 있습니까? c) 연결 풀링 설정 (최대 유휴 시간 등)을 자세히 확인하십시오. d) 새 ec2 인스턴스를 생성하고 동일한 문제가 발생하는지 확인하십시오. –

답변

0

나는 주석으로하지 대답을이를 넣고 싶었지만 ... "... 코멘트 50 평판이 있어야합니다"

  1. 당신이 연결에 왕창 긁고 있습니까 ? 'max_connections'와 같은 변수를 보여줍니다; show process_list; (루트 사용자로)
  2. 디스크 입출력은 iostat -x 5와 어떤 방식으로 커맨드 라인을 사용하며 큐 크기는 & 서비스/대기 시간에 특히주의하십시오. 그 문제가 있다면 더 나은 신뢰성을위한 AWS 예약 된 IOPS를 구입할 수 있습니다. & 성능.
  3. 프로파일 링 할 수 있습니다. 제트 프로파일 러를 사용하면 간단합니다. & 저 부하입니다.