문제

다른 날에 물었던 까다로운 질문입니다 ... 우리는 MySQL 데이터베이스 및 여러 오픈 소스 구성 요소와 함께 혼합 된 C ++ 및 PHP 코드를 사용하여 꽤 복잡한 전화 (SIP) 응용 프로그램을 진행하고 있습니다.

통신 엔지니어는 응용 프로그램의 성능을 추정 해달라고 요청했습니다 (아직 준비되지 않은). 그는 '글쎄, 당신은 초당 Linux 커널을 통과 할 수있는 패킷의 수를 알고 있으며, 앱이 얼마나 빠른지 알 수 있으므로 초당 몇 가지 통화를 통과 할 수 있는지 알려주십시오.'

발생할 수있는 백만 개의 시나리오가 있기 때문에 나에게 말도 안되는 것 같습니다 (말 그대로 ...)

그러나 ... 실제 테스트 전에 응용 프로그램 성능 (실행되는 하드웨어를 알고, 표준 벤치 마크를 실행할 수 있음)을 추정하는 방법이 있습니까?

도움이 되었습니까?

해결책

당신은 확실히 문제를 상단 (최대 처리량) 한계로 한계 할 수 있습니다. 그것에 대해 넌센스는 없습니다. 사실, 그 물건이 있다는 것을 알지 못하면 특히 전화 세계에서 문제에 대한 우연한 접근 방식을 나타냅니다.

문제를 직접 작업 할 수 있습니다. 거래를 위해 달성 해야하는 최소 "작업"또는 앱에있는 작업 단위는 무엇입니까?

예를 들어 일부 처리 및 일부 처리 및 데이터베이스가 발생 했습니까? 개별 작품에 대한 정보를 얻으면 가능한 가장 빠른 처리량에 대한 아이디어가 제공됩니다. 시스템을로드하고 성능이 상당히 낮은 경우 비효율적 인 알고리즘 등으로 처리량을 잃을 수있는 위치를 파악하는 데 시간이 걸릴 수 있습니다.

편집하다

이 연습을하려면 앱이 각 사용 사례에 대해 수행하는 모든 단계를 알아야합니다. 그런 다음 각 사용 사례에 대한 최대 처리량을 식별 할 수 있습니다. 릴리스 및 라이브가되기 전에이 내용을 확실히 알아야합니다.

최악의 사례 분석을 무시하고 있습니다.

다른 팁

보다 웹 성능을위한 용량 계획 : 메트릭, 모델 및 방법. 이러한 종류의 개별 이벤트 시뮬레이션을 수행 할 수있는 몇 가지 도구가 있습니다.

이 물건은 쉽지 않으며 상업용 도구는 비용이들 것입니다. 용량 계획 책에는 Excel 통합 문서 템플릿이 많은 CD와 시작할 수있는 모델의 예가 함께 제공됩니다.

행운을 빕니다 :)

당신이 정말로 이것에 대답해야한다면 당신은 다음과 같이 말할 수 있습니다.

"나는 내 머리 꼭대기를 모른다. 나는 당신을 위해 이것을 추정 할 것이지만 시간이 걸릴 것이다. 분명히 내 대답의 정확성은 내 추정치를 계산하는 데 얼마나 많은 노력 (예 : 시간)에 달려있다. 내 견적을 계산하는 데 많은 시간을 투자해야합니까? "

그들에게 짐을 돌려주십시오. 그들이 실제로 정확한 답변을 원한다면 실제 환경을 시뮬레이션 할 수있는 적어도 일부 테스트 응용 프로그램을 구축해야합니다.

성능을 측정하기 위해 스파이크 할 수 있습니다. 전체 시스템은 아직 작동하지 않을 수 있지만 부품이 어떻게 맞는 지 알고 있습니다. 최종 앱과 동일한 종류의 작업을 수행하는 몇 시간 안에 모든 레이어를 통해 무언가를 채찍질하고 디자인의 성능을 측정하는 데 사용합니다.

기억하다: 프로토 타입은 넓고 스파이크는 깊습니다.

당신은 견적을해야합니다. 견적은 당신에게 정답을주지 않을 것입니다. 그러나 문제에 대해 생각하게 할 것입니다. 지금은 코딩과 모든 것이 잘되기를 바라고 있습니다. 또는 공황 모드에 있으며 견적 할 시간이 없다고 생각합니다.

그것에 대해 생각하는 데 시간을 보내십시오. 중요한 사용 사례를 분석하십시오. 필요한 기억에 대해 생각하십시오. 데이터베이스 액세스에 대해 생각하십시오. 네트워크 액세스 (로컬 및 원격)에 대해 생각하십시오. 이것은 시스템의 성능에 영향을 미칩니다. 팀 전체를 함께 모으십시오.

이러한 중요한 사용 사례에 대한 개발 중 시스템 성능을 정기적으로 측정하십시오. 필요한 경우 구성 요소/기타 시스템을 조롱하십시오. 결과를 분석하십시오. 이것들은 당신의 견적과 어떻게 비교됩니까? 구성 요소는 메모리/데이터베이스/네트워크 바운드 일 수 있습니다. 어쩌면 더 많은 기억이 필요할 수도 있습니다. 데이터베이스 액세스가 적습니다. 더 간단한 쿼리; 캐싱. 이러한 변경을 곧바로 변경할 필요는 없습니다. 그러나 시스템의 작동 방식과해야 할 일을 알고 있습니다.

결과: 시스템 테스트에서 불쾌한 놀라움이 줄어 듭니다. 출시 날짜가 다가 오면서 공황이 적습니다.

당신은 확실히 용량 계획을 미리 수행 할 수 있지만, 추정 품질은 사용 가능한 데이터의 품질에 따라 다릅니다.

가장 좋은 추정치는 테스트에서 시스템을 구축하고 시뮬레이션 된 워크로드를 실행 한 다음 성능 요구 사항 및 워크로드의 함수로 용량을 예측하는 것입니다. 이 3은 예측 공간을 형성합니다 - 3 중 2 개 중 2 개 주어지면 세 번째를 예측할 수 있습니다.

  1. 성능 요구 사항과 용량 (즉, 하드웨어) 주어진 작업 부하를 계산할 수 있습니다.

  2. 성능 요구 사항과 워크로드가 주어지면 필요한 용량 (IE 하드웨어)을 계산할 수 있습니다.

  3. 작업량과 용량이 주어지면 예상 성능을 예측할 수 있습니다.

이것은 일부 도메인에서도 마찬가지이지만 해당 도메인의 전문가가 아니라면 아무런 생각도 없습니다. 예를 들어 산업용 로봇 제어에 코드를 작성합니다. 속도는 코드의 실행 속도가 아니라 로봇 모션에 의해 제한됩니다. 로봇이 얼마나 빠르고 얼마나 멀리 가야하는지 알면 "속도"에 대한 상당히 좋은 추정을 할 수 있습니다. 응용 프로그램의 시간을 추정하는 방법을 모르겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top