답변:
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에 배포 할 때 기능이 유사하게 작동하는지 확인할 수 있습니다. 그러나 이미 기능에 대해 매우 높은 수준의 신뢰를 가지고 있으며 제대로 작동하지 않고 제대로 작동하는지 확인하기 만하면됩니다.
나는 그것을 완전히 대답하지 못할 수도 있지만, 람다에 대한 제한된 경험의 견해는 다음과 같습니다.
monitoring
탭 의 대시 보드에 다음과 같이 표시됩니다.스로틀 / 오류 / 호출 횟수도 마찬가지입니다.
Lambda 호출에서 전체 v8 프로파일 러 덤프를 얻으려면 IOpipe 프로파일 러 를 확인하십시오 . Chrome Devtools에 그것들을로드하여 CPU 시간이 소비되는 위치와 함수에 메모리가 어떻게 사용되고 있는지 확인할 수 있습니다.
면책 조항 : IOpipe에서 일합니다.
StackImpact 에이전트 를 사용 하여 CPU 및 메모리 프로파일을 가져 오십시오. 블로그 게시물에서 자세한 내용 : AWS 람다 CPU 및 메모리 프로파일 (Node.js를) . Lambda Node.js 프로세스가 요청간에 중단되므로 대부분의 다른 도구는 즉시 작동하지 않을 수 있습니다.
면책 조항 : StackImpact에서 일합니다.