단계 2: 성능 문제 생성

Agent-to-Agent (A2A) 협업 기능을 평가하기 위해, 이제 실제와 같은 네트워크 성능 문제를 시뮬레이션합니다:

  • 네트워크 재전송 문제 시뮬레이션: 실제 성능 저하를 복제하기 위해 네트워크 인프라 내에서 TCP 재전송 문제를 생성합니다.

  • 데이터베이스 트래픽 생성: 네트워크 문제의 영향을 받을 실제와 같은 데이터베이스 워크로드 패턴을 생성합니다.

네트워크 성능 문제 생성

workshop-module-3 디렉토리 내의 create-performance-issue 폴더로 이동합니다:

cd /workspace/workshop-module-3/agentcore-performance-agent/test-infra/create-performance-issue

네트워크 성능 문제 생성:

chmod +x a2a_retransmission_issue_generator.py && \
  python3 a2a_retransmission_issue_generator.py --action create --region us-east-1
chevron-right🔍 이 스크립트는 무엇을 하나요?hashtag

Reporting Server의 OS 레벨 TCP 설정을 SSM을 통해 변경하여 재전송 문제를 인위적으로 생성합니다:

  1. CloudFormation 스택에서 Reporting Server 인스턴스 ID 조회

  2. SSM SendCommand로 TCP 설정 변경:

    • TCP 버퍼 크기 축소 (net.core.rmem_max, net.core.wmem_max)

    • Window Scaling 비활성화 (net.ipv4.tcp_window_scaling=0)

    • Retransmission 최소화 (net.ipv4.tcp_retries2=3)

    • RTO 최소값 설정

  3. tc qdisc로 5% 패킷 손실 + 50ms 지연 추가

  4. 기존 설정을 /tmp/tcp_backup/에 백업 (복구용)

--action fix로 실행하면 백업에서 원래 설정을 복원합니다.

재전송 문제 생성기

데이터베이스 트래픽 생성

RDS 데이터베이스를 쿼리하는 트래픽 생성을 실행합니다:

chevron-right🔍 이 스크립트는 무엇을 하나요?hashtag

SSM을 통해 Reporting Server에서 RDS로 지속적인 MySQL 트래픽을 생성합니다:

  1. CloudFormation 스택에서 Reporting Server 인스턴스 ID와 DB 엔드포인트 조회

  2. SSM SendCommand로 Reporting Server에서 MySQL 쿼리 실행:

    • REPEAT(), 크로스 조인 등 대용량 쿼리로 TCP 버퍼 압박

    • 6개 워커 스레드가 동시에 쿼리 실행

  3. --background 모드로 백그라운드 데몬 프로세스 실행

  4. 90분 동안 지속적으로 트래픽 생성

이 트래픽이 변조된 TCP 설정과 결합되어 CloudWatch Network Flow Monitor에서 재전송 메트릭을 유발합니다.

트래픽 생성기

로그 확인

아래 명령어를 실행하여 Reporting Server에서 RDS 데이터베이스로의 샘플 쿼리가 성공적으로 실행되고 있는지 확인합니다:

트래픽 생성기 로그
circle-info

트래픽 생성기가 백그라운드에서 실행되며, 이 트래픽이 TCP 재전송을 유발합니다. CloudWatch Network Flow Monitor에서 재전송 메트릭을 확인할 수 있습니다.

ApplicationURL 조회

circle-info

CLI 방법

circle-info

콘솔 방법: AWS 콘솔에서 AWS CloudFormationarrow-up-right 서비스로 이동합니다. sample-application 스택에서 Outputs 탭의 ApplicationURL 값을 복사하여 메모에 저장합니다. 이후 단계에서 필요합니다.

CloudFormation 출력

노트북의 새 브라우저에서 ApplicationURL 값을 붙여넣습니다. View Tickets 탭을 선택합니다. 생성된 지원 티켓을 확인할 수 있습니다:

지원 티켓

코드 분석: 성능 문제 생성 스크립트

a2a_retransmission_issue_generator.py

TCP 재전송 문제를 인위적으로 생성하는 스크립트입니다:

장애 주입 메커니즘

스크립트는 OS 레벨 TCP 설정을 변경하여 재전송 문제를 생성합니다:

설정
정상 값
변경 값
효과

TCP 버퍼 크기

128 MB

극소값

패킷 처리 병목

Window Scaling

활성화

비활성화

전송 윈도우 제한

Retransmission Timeout

기본값

최소값

조기 재전송 발생

continuous_database_traffic_generator.py

재전송이 Network Flow Monitor에서 감지되려면 지속적인 트래픽이 필요합니다:

트래픽 경로: Reporting Server (TCP 문제 주입) → RDS Database

이 트래픽이 TCP 재전송을 유발하며, CloudWatch Network Flow Monitor에서 재전송 메트릭으로 관측됩니다.

circle-info

핵심 포인트: 성능 이슈 생성은 두 단계로 구성됩니다. (1) TCP 설정 변조로 재전송 조건 생성, (2) 데이터베이스 트래픽으로 실제 재전송 유발. Performance Agent의 analyze_network_flow_monitor 도구가 이 재전송을 감지하고 fix_retransmissions로 TCP 설정을 복원합니다.

이 단계가 완료되었습니다. 다음 단계로 진행하세요.

마지막 업데이트