2009-03-03 3 views
2

현재 n 계층 시스템에서 작업 중이며 일부 데이터베이스 성능 문제로 인해 어려움을 겪고 있습니다. 우리가 조사한 한 분야는 데이터베이스 서버와 응용 프로그램 서버 사이의 대기 시간입니다. 테스트 환경에서 두 상자 사이의 평균 핑 시간은 이지만 클라이언트 사이트에서는 0.2ms의 영역에 더 많이 있습니다. 그게 우리가 걱정해야 할 것이 있습니까?데이터베이스 네트워크 대기 시간

일반적인 시스템의 경우 공진 대기 시간은 어떻게 생각합니까? 대기 시간을 테스트/측정하는 방법에 대해 어떻게 생각합니까?

Karl

답변

4

간단히 : 아니오! 모니터링해야합니까

쿼리의 글로벌 성능 (즉, 다시 서버에 DB + 실행 + 교통 운송)

은 당신이 할 수있는 것은 시간을 쿼리 일반적으로 모니터링 할 성능 카운터를 사용하는 것입니다 데려가. 결과가 밀리 초 영역 이상인 것을 확인할 수 있습니다.

"합리적인 대기 시간"과 같은 것은 없습니다. "귀하의 프로젝트에 적합한 합리적인 대기 시간"을 고려해야합니다. 이는 작업중인 업무에 따라 크게 다를 것입니다. 사람들은 실시간 거래 플랫폼 및 읽기 전용 아마추어 웹 사이트에 대해 동일한 기대치를 갖고 있지 않습니다.

+0

SQL에 내장 된 기능이 있습니다. 1ms의 필터를 설정하지 마십시오. 그렇지 않으면 더 빨리 실행되는 작업이 표시되지 않습니다. –

1

Linux 기반 서버에서 tc 명령을 사용하여 지연 효과를 직접 테스트 할 수 있습니다. http://devresources.linux-foundation.org/shemminger/netem/example.html

:이 명령은 모든 패킷이 여기에 해당 지연에게

tc qdisc del dev eth0 root 

자세한 내용을 제거하기 위해 eth0를 통해

tc qdisc add dev eth0 root netem delay 10ms 

사용이 명령을가는에 10ms의 지연을 추가 할 것입니다 예를 들어

모든 응용 프로그램은 다를 것이지만 10ms 대기 시간이 performa에 중요한 영향을 미친 상황을 분명히 보았습니다 시스템의 nce.

1

answers.com의 수석 연구원 중 한 사람은 자신의 연구에 따르면 웹 페이지로드에 대한 400 밀리 초 대기 시간은 페이지로드를 취소하고 다른 곳으로 이동하는 사람들을 처음 시작할 때와 관련이 있다고 말했습니다. 제 조언은 원래의 고객 요청에서부터 이행까지 모든 과정을 살펴 보는 것입니다. 귀하가 잘하고 있다면 더 이상 최적화 할 필요가 없습니다. 수학적으로는 8.2 ms와 0.2 ms가 지수 적으로 더 크지 만 인간의 감각으로 볼 때 아무도 실제로 8.0 ms의 차이를인지 할 수 없습니다. 그렇기 때문에 사진 경기가 끝난 이유는 무엇입니까?)

2

매우 시기심에 대한 답변을 드려 죄송합니다. 다른 사람들이 자신의 앱 서버와 db 서버간에 달성 한 네트워크 대기 시간을 측정 할 때이 질문을 발견했습니다. 어쨌든, 나는 다른 대답이 나타났습니다.

어쨌든, 간단히 말해서 네트워크 대기 시간 (ping으로 측정)은 큰 차이를 만들 수 있습니다.

데이터베이스 응답이 .001ms 인 경우 0.2ms에서 8ms ping으로 갈 때 큰 영향을받습니다. 나는 데이터베이스 프로토콜이 수다스러운 것으로 들었는데, 사실이라면 느린 네트워크 대기 시간 대 http의 영향을 더 많이 받는다는 것을 의미한다.

1 개의 쿼리를 실행하는 경우 8ms를 추가하면 db의 응답을받을 필요가 없습니다. 그러나 일반적으로 나쁜 코드 또는 ORM의 최적화되지 않은 사용으로 발생하는 10,000 개의 쿼리를 수행하는 경우 8ms 핑에 대해 추가 80 초를 기다려야합니다. 0.2ms 핑의 경우 4 초만 기다립니다.

나 자신을위한 정책으로 클라이언트 응용 프로그램이 데이터베이스에 직접 연결되는 것을 허용하지 않았습니다. 클라이언트 응용 프로그램은 항상 응용 프로그램 서버 (예 : REST 웹 서비스)를 통과해야합니다. 그런 식으로 실수로 "1 + N"ORM 문제가 발생하면 그다지 영향을 미치지 않습니다. 나는 여전히 근본적인 문제를 해결하려고 노력할 것입니다 ...

+0

다시 옛날 쓰레드를 되살려 놓았지만 나도 이걸 발견했다. 나는 데이터베이스 활동의 혼란으로 인해 데이터베이스의 RTT 대기 시간을 모니터링하는 것이 중요하다는 데 동의한다. 회사에서 제공하는 도구 (www.heimdalldata)에는 쿼리에 지정된 지연 시간을 추가 할 수있는 사용하기 쉬운 여러 가지 기능 외에도 응용 프로그램에 미치는 영향을 측정 할 수있는 기능이 있습니다. 또한 중복 쿼리를 감지하고 규칙을 통해 쿼리 또는 테이블 수준에서 캐싱을 구성 할 수 있습니다. 빠른 쿼리는 결코 응용 프로그램을 떠나지 않는 쿼리입니다. –

관련 문제