AWS Lambda 기능을 성능 테스트하는 방법은 무엇입니까?


14

AWS Lambda 비용은 함수가 실행되는 시간과 메모리 풋 프린트에 따라 다릅니다. 더 빨리 끝나고 적은 메모리를 사용하는 기능을 사용하면 많은 돈을 절약 할 수 있습니다. 특히 그러한 기능이 자주 실행될 때.

Node.js Lambda 함수를 어떻게 속도와 작은 메모리 풋 프린트로 조정하여 비용을 절감 할 수 있습니까?

Lambda의 개선에 유리한 다른 측면이 있습니까?

답변:


6

Dawny33 응답 은 좋지만 개발 프로세스 초기에 시작합니다.

클라우드 환경을 주시하여 예상대로 작동 (다른 데이터 세트에서 작동 할 수있는 "생산"기능 포함)이 작동하는지 확인하는 것이 중요합니다. 로컬 또는 테스트 데이터 세트.

그럼에도 불구하고, 최적화 목적으로 수행하는이 성능 테스트는 개발자의 머신에서 직접 시작해야한다고 말합니다. 또는 적어도 일부 로컬 환경에서 클라우드로 나아 가기 전에.

내가 말한 이유는 AWS Lambdas가 많은 점에서 놀랍지 만 서버를 완전히 제어 할 수 없기 때문에 계측 기능이 제한되기 때문입니다. 나는 때 서버를 사용하지 계측이 불가능하다 말을하지만, 당신이 (얼마나 많은에 의해 발생하는 얼마나 많은 CPU 인터럽트를 파악하려고하고 있지 않다 당신의 코드를) 그냥 재미를위한)

따라서 제가 조언하는 것은 실제로 서버리스에 국한되지 않으며 프로파일 링을 일찍 시작하는 것입니다. NodeJS 프로파일 링은 다양한 툴을 사용하여 만들 수 있습니다. NewRelic, dynatrace 및 AppDynamic은 일부 주요 업체입니다. 더 작은 플레이어도 있으며 그중 일부는 Nodefly와 같은 NPM 패키지 일뿐입니다. V8 엔진에 프로파일 러가 내장되어 있으므로 추가 도구없이 일부 NodeJS를 수행 할 수도 있습니다. NodeJS 의이 문서 가 시작될 것입니다.

어떤 툴을 선택하든 로컬로 설치하고 프로파일 링 데이터를 수집하려고합니다. 에이전트를 실행하거나 package.json에 패키지를 포함시킬 수 있습니다. 도구의 지시 사항에 따라 설치 방법이 설명되어 있습니다. 좋은 프로파일 러는 얼마나 많은 메모리와 CPU를 사용하는지 알려줄 것입니다. 더 나은 도구를 사용하면 얼마나 많은 원격 호출이 이루어 졌는지, 얼마나 오래 걸 렸는지 통찰 할 수 있습니다.

도구가 제공하는 프로파일 링 데이터를 사용하여 병목 현상을 식별하고 해결하십시오. 프로파일 링의 양에는 제한이 없습니다. 어떤 사람들은 (미친?) 가장 중요한 기능의 시스템 호출을 볼 것입니다. 함수의 나노초를 면도하려는 경우 이런 종류의 작업을 수행해야 할 수도 있습니다 (그러나 AWS Lambda가 시작하기에 최선의 선택이 아닐 수도 있습니다).

이 시점에서 AWS Lambda와 관련된 내용은 언급하지 않았 음을 주목할 가치가 있습니다. 이는 최적화가 AWS Lambda에 국한되지 않기 때문입니다 (결국 서버리스에서는 서버 / 환경에 대해 걱정할 필요가 없습니다).

코드가 작동 할뿐만 아니라 원하는 방식으로 작동하는지 확인하십시오. 과도하게 최적화하지 말고 CPU 및 메모리 사용량을 계속 주시하십시오. 2MB 배열을 정렬 할 때 실제로 10MB로 커져야합니까? 아마 아닙니다.

그런 다음 Dawny33에서 언급 한 도구 또는 다른 도구를 사용하여 Lambda에 배포 할 때 기능이 유사하게 작동하는지 확인할 수 있습니다. 그러나 이미 기능에 대해 매우 높은 수준의 신뢰를 가지고 있으며 제대로 작동하지 않고 제대로 작동하는지 확인하기 만하면됩니다.


예, 중요하지만 어떻게 할 수 있습니까? 몇 가지 도구, 사례, 개발자가 정확히 무엇을 할 수 있습니까? 이 답변에 언급 된 내용이 없습니다 : /
Evgeny

프로파일 링과 계측을 통해 그렇게 말했습니다. NewRelic APM이 한 예이지만 사용 가능한 프로파일 러 중 하나 일뿐입니다. 프로파일 러를 설치하고 기능을 실행하며 최적화하십시오. AWS 관련 문제가없는 한 AWS Lambda에서 실행할지 여부는 중요하지 않습니다. 귀하의 의견에 따라 답변을 업데이트하겠습니다.
Alexandre

작업을 수행 할 수있는 기사, 블로그, 알려진 프로파일 러에 대한 예제 및 링크 그것은 imho가 답을 소중하게 만드는 것입니다. 사람들에게 "어떻게 CPU 인터럽트를 계산합니까?"
Evgeny

좋은 지적. 나는 대답을 다시 향상시켰다.
Alexandre

5

나는 그것을 완전히 대답하지 못할 수도 있지만, 람다에 대한 제한된 경험의 견해는 다음과 같습니다.

  1. 속도 성능 : Lambda 함수를 한 번만 실행하면 Lambda monitoring탭 의 대시 보드에 다음과 같이 표시됩니다.

여기에 이미지 설명을 입력하십시오

스로틀 / 오류 / 호출 횟수도 마찬가지입니다.

  1. 람다 함수 의 메모리 사용위해 CloudWatch 필터를 설정할 수도 있습니다.이 함수를 사용하면 처리기를 더욱 최적화 할 수 있습니다. 이것은 설정 방법에 대한 적절한 게시물입니다.
  2. 또한 적절한 로깅을 설정하여 나중에 CloudWatch에서 로그를 살펴볼 수 있습니다. 이것은 최적화 해킹 자체는 아니지만 모범 사례 중 하나입니다.
  3. 테스트 : 람다 함수를 철저히 테스트하여 에지 케이스를 놓치지 마십시오. 람다는 재시도 전에 기능이 실패했기 때문에 중요합니다. 따라서 기능을 올바르게 테스트하면 시간을 미리 절약 할 수 있습니다. Lambda 함수 테스트 안내서

5

Lambda 호출에서 전체 v8 프로파일 러 덤프를 얻으려면 IOpipe 프로파일 러 를 확인하십시오 . Chrome Devtools에 그것들을로드하여 CPU 시간이 소비되는 위치와 함수에 메모리가 어떻게 사용되고 있는지 확인할 수 있습니다.

여기에 이미지 설명을 입력하십시오

면책 조항 : IOpipe에서 일합니다.


0

StackImpact 에이전트 를 사용 하여 CPU 및 메모리 프로파일을 가져 오십시오. 블로그 게시물에서 자세한 내용 : AWS 람다 CPU 및 메모리 프로파일 (Node.js를) . Lambda Node.js 프로세스가 요청간에 중단되므로 대부분의 다른 도구는 즉시 작동하지 않을 수 있습니다.

여기에 이미지 설명을 입력하십시오

면책 조항 : StackImpact에서 일합니다.


관련성이 있고 잠재적으로 유효한 솔루션이지만 질문을 해결하는 데 도움이 될 수있는 방법에 대해 조금 확장하면 링크가 썩어도 도움이 될 수있는 방법에 대한 첫 번째 아이디어를 얻지 못하는 경우에만 링크 느낌을 피할 수 있습니다.
Tensibai
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.