Skip to content

Router/Extension - Large echo fails / hangs on deployed AWS env #256

@huntharo

Description

@huntharo

Motivations

  • Big files should not be slower than small files on an /echo test
  • Big files work fine on /echo-slow (which reads into memory before sending response bytes)

Acceptance Criteria

  • Confirm that response bytes can be written before request is finished
  • Add configurable header to enable debug logging - implement handling in Router and Extension
  • Add access log to the demo-app
  • Add access log to the extension
  • Build - Router is not deploying updates when image changes #260
  • Add access log to the router
  • Add config option to disable periodic metrics printing in router
  • Try a Node.js test server behind an ALB and hosted on ECS - See if the issue can be replicated - Yes the issue is able to be replicated without the Router
  • Identify source of the hang - It's a problem with the AWS ALB
  • Fix the issue - Will report to AWS
  • Export NLB URL / ports to the PR and as step outputs
  • Add smoke check tests for the NLB ports to GHA
  • Add echo tests?

Current Understanding - 2024-01-11

  • The problem is reproducible with AWS ALB and ECS Task using Node.js echo request
  • The problem is intermittent but happens most of the time (> 60%)
  • Will report to AWS

Test Tool Receives only 1.62 MB of Response

image

Lambda Extension only Received 1.62 MB of Request

image

Setup

wget -H "Accept: image/jpeg" https://github.com/pwrdrvr/lambda-dispatch/blob/main/src/demo-app/public/silly-test-image.jpg?raw=true -O silly-test-image.jpg

wget https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
chmod +x hey_linux_amd64

wget https://github.com/hatoo/oha/releases/download/v1.5.0/oha-linux-amd64
chmod +x oha-linux-amd64

Special Test Tools

node src/demo-app/echo-upload-cli.js https://lambdadispatch-pr-257.ghpublic.pwrdrvr.com/echo ~/.cargo/bin/oha

node src/demo-app/echo-cli.js https://lambdadispatch-pr-257.ghpublic.pwrdrvr.com/echo 

✅ Test Case - CloudShell - Small File - Works

  • Upload: 91 MB/sec
  • Download: 91 MB/sec
  • File Size: 165 KB
TOKIO_WORKER_THREADS=1 ./oha-linux-amd64 -c 10 -z 10s -D ./silly-test-image.jpg -T image/jpeg -m POST https://lambdadispatch-pr-257.ghpublic.pwrdrvr.com/echo

./hey_linux_amd64 -m POST -c 20 -z 10s -h2 -T image/jpeg -D ./silly-test-image.jpg https://lambdadispatch-pr-257.ghpublic.pwrdrvr.com/echo
image

❌ Test Case - CloudShell - Large File - Duplex- Takes 20 Seconds

  • Upload:
  • Download:
  • File Size: 9.0 MB
TOKIO_WORKER_THREADS=1 ./oha-linux-amd64 -c 1 -n 1 -D ./oha-linux-amd64 -T application/octet-stream -m POST https://lambdadispatch-pr-257.ghpublic.pwrdrvr.com/echo

./hey_linux_amd64 -m POST -c 1 -n 1 -h2 -T "application/octet-stream" -D ./hey_linux_amd64 https://lambdadispatch-pr-257.ghpublic.pwrdrvr.com/echo

✅ Test Case - CloudShell - Large File - Simplex - Takes 0.25 Seconds

  • Upload: 89.9 MB/sec
  • Download: 89.9 MB/sec
  • File Size: 9.0 MB
TOKIO_WORKER_THREADS=1 ./oha-linux-amd64 -c 2 -z 10s -D ./oha-linux-amd64 -T application/octet-stream -m POST https://lambdadispatch-pr-2
57.ghpublic.pwrdrvr.com/echo-slow
image

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

Status

In progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions