가끔씩 DynamoDB에 기록하는 데 여러 초가 걸리는 시스템 성능 로그에서 이상한 증상을 진단하기 위해 노력하고 있습니다. 이 AWS (동부 지역) AWS DynamoDB와 통신 할 때 전체 지연 시간이 있습니다.
- : 는 인프라에 대한 몇 가지 배경을 제공합니다 provisioned for 초당 1000 건의 읽기/쓰기
연결 웹 사이트에서 약간의 요청을받는 EC2 인스턴스에서 PHP 웹 서비스가 실행되고 있습니다. ser, dynamo에 레코드를 쓰고 빈 응답을 반환합니다. 전송 된 데이터의 양은 1kb 미만입니다. ELB에 대한 트래픽 양은 하루 종일 다양하지만 초당 요청 수는 100 개를 넘습니다. 여기서 중요한 점은 AWS SDK가 70ms를 도입 한 이후로 필요한 발전기 작업을 위해 작은 CURL 클라이언트를 직접 작성했기 때문입니다 처리 시간의 오버 헤드.
은 내가 사용하고있는 유일한 옵션은 다음과 같습니다 제가 보는 동작을에
CURLOPT_POST
CURLOPT_RETURNTRANSFER
CURLOPT_TCP_NODELAY
: 의 경우 99 %를 들면, ELB에 의해 기록 된 응답 시간이 목표 인 30ms의 아래에있다. 그러나 그래프를 변경하여 동일한 범위에서 최대 값을 표시하면 시간이 거의 전체 초 간격으로 떨어지는 매우 다른 그림 (graph)이 표시됩니다. 이 그래프는 트래픽이 적은 밤중에도 발생하기 때문에로드와 상관 관계가 없습니다. 이러한 추세로 인해 더 깊이 파고들 수 있었고 지연을 DynamoDB에 대한 연결로 분리 할 수있었습니다.
이러한 것들은 프로그래밍 방식 임계 값처럼 보일뿐 일반적인 잡음은 아닙니다. 첫 번째 생각은 기하 급수적 인 백 오프 였지만 다이나모 웹 서비스의 응답에서이 값 (모두 200)을 제안하지는 않을 것이고 현재 처리량은 프로비저닝의 10 %입니다. . 그리고 트래픽이 최소화 된 한밤중에도이 성능 추세를 볼 수 있습니다. 백 오프가 아니라면 어떤 종류의 조절처럼 느껴질 것입니다. 아이디어?
내 디나모의 API 호출에 CURL의 자세한 출력을 사용하여, 나는 다음과 같은 항목을 참조하십시오
Line 151190: 2014-03-12T16:48:35-04:00 - INFO - Time: 1.001436, (Start Transfer: 1.001416, DNS: 2.6E-5, Connect: 0.998141, Pre-Transfer: 0.998199)
Line 196871: 2014-03-12T16:48:42-04:00 - INFO - Time: 1.001528, (Start Transfer: 1.001488, DNS: 3.1E-5, Connect: 0.99694, Pre-Transfer: 0.996981)
Line 430508: 2014-03-12T16:49:19-04:00 - INFO - Time: 1.002823, (Start Transfer: 1.002807, DNS: 3.2E-5, Connect: 0.998972, Pre-Transfer: 0.999009)
Line 870236: 2014-03-12T16:50:31-04:00 - INFO - Time: 1.000663, (Start Transfer: 1.000642, DNS: 3.0E-5, Connect: 0.001506, Pre-Transfer: 0.001537)
Line 950109: 2014-03-12T16:50:43-04:00 - INFO - Time: 1.010762, (Start Transfer: 1.010737, DNS: 3.3E-5, Connect: 0.001357, Pre-Transfer: 0.001394)
의 핵심은 케이스의 50 %에 연결 시간처럼 보이고, 나머지 50 %를 여기 발견 시간이 어디에서 쓰여지는지는 불분명합니다. 엔드 투 엔드 (end-to-end) 시간에 기여할 수있는 또 다른 구성 요소가있는 것 같지만, 그게 무엇인지 정확히 지적하는 데 어려움을 겪고 있습니다.
도움이 될 것입니다.
Dynamo DB는 어느 지역에 있습니까? EC2 인스턴스와 동일합니까? – Ray
DNS 일 수 있습니까? 주소 또는 IP를 사용하고 있습니까?IP를 사용하면 현재 AWS 설정이 잘 작동하지 않을 수도 있지만 내부 주소를 사용할 수 있습니까? –
@ 레이 - 예, 모든 것이 같은 지역에 있습니다 – Jeff