패러다임: 자세한 부하 테스트 도구 Flood
원작자: "Introducing flood: a load testing tool for benchmarking EVM nodes》
소개하다
원문 편집: Deep Tide TechFlow
소개하다
부하 테스트는 복원력이 높고 성능이 우수한 데이터 시스템을 구축하고 개발하는 데 있어 핵심 단계입니다. 그러나 부하 테스트는 암호화폐 인프라 개발에 널리 사용되지 않습니다. RPC 엔드포인트 성능 분석을 위한 벤치마킹 도구인 Flood를 소개하게 되어 기쁩니다.
처음에는 Flood를 도구로 사용하여 Reth를 최적화하고 다양한 부하에서 대기 시간과 처리량의 장단점을 이해했습니다. 나중에 우리는 Flood가 Reth 외에도 다양한 유형의 암호화폐 인프라의 성능을 최적화하는 데 상당한 유용성을 가지고 있음을 발견했습니다.
한 번 보자.
부하 테스트란 무엇이며 왜 중요한가요?
부하 테스트는 다양한 워크로드에 노출될 때 시스템의 성능 특성 변화를 측정하는 것을 말합니다. 이 접근 방식의 핵심 통찰력은 처리량, 대기 시간 및 오류율과 같은 성능 메트릭이 일반적으로 시스템 부하가 증가할 때 저하된다는 것입니다. 따라서 서로 다른 제어 부하에서 시스템이 어떻게 작동하는지 관찰하면 시스템 병목 현상, 장애 모드 및 궁극적인 성능 기능과 같은 정보를 파악할 수 있습니다.
부하 테스트를 통해 얻은 정보는 다양하게 활용될 수 있습니다. 시스템이 개발되는 동안 부하 테스트는 개선을 위해 우선 순위를 지정해야 하는 시스템 병목 현상을 강조할 수 있습니다. 두 시스템을 비교할 때 부하 테스트를 통해 어떤 시스템이 더 성능이 좋고 신뢰할 수 있는지 확인할 수 있습니다. 이것의 특별한 경우로 부하 테스트는 단일 시스템의 두 가지 다른 하드웨어 또는 소프트웨어 구성을 비교할 수 있습니다. 각각의 경우에 부하 테스트를 통해 고도로 최적화된 시스템 개발이 가능합니다.
블록체인 노드를 로드 테스트하는 방법은 무엇입니까?
우리의 초점은 블록체인 노드에서 데이터를 추출하는 데 일반적으로 사용되는 통신 프로토콜인 RPC에 있습니다.
현재 RPC 성능을 측정하는 가장 일반적인 방법은 부하 테스트가 아니라 대기 시간 테스트입니다. RPC 노드에 요청을 보내고 응답을 받는 데 걸리는 시간을 측정합니다. 다양한 RPC 공급자에 대한 대기 시간 테스트는 다양한 웹 사이트에서 찾을 수 있습니다. 불행하게도 이러한 유형의 테스트는 시스템이 로드 상태에서 작동하는 방식에 대해 거의 나타내지 않기 때문에 노드 성능에 대한 제한된 보기를 제공합니다.
블록체인에서 워크로드는 두 가지 중요한 방식으로 달라질 수 있습니다. 고전적인 변수는 크기입니다. 초당 10,000개의 요청 로드는 초당 100개의 요청 로드보다 시스템에 더 많은 스트레스를 줍니다. 또 다른 부하 변수는 RPC 방법입니다. 블록체인 노드에서 추출한 데이터 유형별로 RPC 방식이 다릅니다. 예를 들어 블록 대 트랜잭션 대 로그 대 추적입니다. 각 RPC 방법은 시스템에 다른 유형의 로드를 배치합니다. 일부 RPC 메서드는 메모리 IO 바인딩이고 다른 RPC 메서드는 CPU 바인딩입니다.
홍수란 무엇입니까?
이러한 원칙을 바탕으로 Flood라는 부하 테스트 도구를 개발했습니다. 대기 시간 테스트와 달리 Flood는 로드 테스트를 통해 RPC 끝점의 성능 특성에 대한 전례 없는 보기를 제공하고 테스트 범위를 모든 관련 RPC 메서드로 확장합니다.
Flood는 세 가지 기본 구성 요소로 구성됩니다.
호출 생성 엔진: Flood는 다양한 유형의 블록체인 워크로드와 유사한 무작위 샘플링 분포를 사용하여 매개변수화된 대규모 RPC 호출 세트를 생성합니다. Flood는 Paradigm Data Portal 데이터세트를 활용하여 블록체인 기록을 완벽하게 커버합니다.
부하 테스트 엔진: 그런 다음 Flood는 Vegeta(Go로 작성된 고성능 부하 테스트 도구)를 오케스트레이션하여 이러한 호출을 사용하여 RPC 엔드포인트를 부하 테스트합니다.
보고 엔진: Flood는 테스트를 실행한 후 다양한 차트, 표 및 보고서를 사용하여 결과를 요약합니다. 이러한 요약은 스크립트 및 데이터에 쉽게 통합됩니다.
각 구성 요소는 고도로 구성 가능하므로 Flood가 광범위한 테스트 시나리오 및 환경을 다룰 수 있습니다.
홍수는 무엇을 할 수 있습니까?
Flood가 정상적으로 작동하는 동안 사용자는 테스트할 RPC 메서드와 RPC 끝점 목록을 지정합니다. 예를 들어 Reth의 eth_getLogs 두 버전의 성능을 테스트할 수 있습니다. Flood는 이러한 RPC 끝점을 테스트하기 위해 다른 제어 로드를 실행합니다. 예를 들어 초당 1,000, 2,000, 4,000 및 8,000개의 요청에서 eth_getLogs를 실행할 수 있습니다. 그런 다음 Flood는 부하에 따라 성능 지표가 어떻게 달라지는지를 요약한 표와 그래프를 표시합니다. 출력은 다음과 같습니다.
로드 하에서 성능 메트릭이 저하되는 특정 방식은 시스템 병목 현상과 궁극적인 성능 용량을 밝힐 수 있는 풍부한 통찰력을 제공합니다.
그 외에도 Flood는 모든 유형의 고급 사용자에게 적합한 고급 기능을 제공합니다.
Flood는 "스트레스 테스트"(시간이 지남에 따라 점진적으로 로드 증가), "스파이크 테스트"(작은 로드에 이어 큰 갑작스러운 로드) 및 "소크 테스트"(장기 실행 로드)를 포함하여 다양한 로드 테스트 계획을 사용할 수 있습니다.
Flood는 각 RPC 노드에서 기본 모드로 실행되도록 부하 테스트를 오케스트레이션하여 네트워크 병목 현상으로 인한 노이즈를 제거할 수 있습니다.
Flood에는 각 RPC 엔드포인트가 동일한 응답을 반환하는지 확인하는 "동등" 테스트 모드가 있습니다.
Flood를 구축하는 이유는 무엇입니까?
Paradigm에서는 Reth라는 새로운 노드 구현을 개발하고 있으며 성능은 주요 목표 중 하나입니다. 우리는 Reth의 성능 특성을 자세히 설명하기 위해 Flood를 개발했습니다. 우리는 다양한 워크로드 및 시스템 구성에서 수많은 Reth 성능 병목 현상을 밝히기 위해 Flood를 사용했습니다. 그런 다음 이러한 병목 현상을 해결하십시오. Flood를 사용하여 우리는 Reth 개발자에게 코드베이스 변경이 종단간 시스템 성능으로 어떻게 변환되는지에 대한 높은 가시성을 제공하는 긴밀한 피드백 루프를 만들었습니다.
Reth 외에도 Flood가 RPC 노드와 관련하여 답변되지 않은 많은 질문을 해결하는 데 도움이 될 것이라고 생각합니다.
노드를 실행할 때 가장 중요한 하드웨어 사양은 무엇입니까? RAM 속도, RAM 용량 및 CPU 속도와 관련하여 스토리지 IO가 얼마나 중요합니까? RAID가 그만한 가치가 있습니까?
타사 RPC 공급자별 RPC 방법당 유효 속도 제한은 무엇입니까?
결론적으로
결론적으로
이 백서에서는 블록체인 노드의 성능 특성에 대한 전례 없는 관점을 제공하는 부하 테스트 도구인 Flood를 주로 소개합니다. Flood는 원래 Reth의 개발을 최적화하기 위해 구축되었지만 다른 유형의 고성능 암호화폐 인프라 개발을 위한 중요한 도구가 될 것이라고 믿습니다. 우리는 다른 사람들이 Flood를 사용하여 고성능의 안정적인 시스템을 구축하는 방법을 기대합니다.


