actix / actix/actix-web

Unreasonable increase in latency between localhost and remote

Đang mở
#3,484 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
needs-investigation
Ngôn ngữ chính
Rust
Star
24.8k
Fork
1.9k
Merge trung bình
23 giờ 10 phút
Pull request đã merge (30 ngày)
26

Mô tả

I'm benchmarking my web server code for JSON deserialization against Golang. Code can be found at https://github.com/yourarj/rust-vs-go-performance-benchmark

We benchmarked the server response in TWO setups

1. localhost (server and K6 on same server)
2. remote (server and K6 are on independent machines)

Note : for both go and rust same setup has been used for localhost and remote cases.

## Expected Behavior

When we move our K6 from localhost setup to remote setup go and rust should see the same network overhead.

## Current Behavior

![image](https://github.com/user-attachments/assets/b832ab25-df01-4947-846e-a72042ed1e48)

E.g. If we consider **http_req_waiting** for go the average request overhead is _151.3678_ but in case of actix-web overhead is whopping _471.5906_.

## Possible Solution

Tried to play with worker count, backlog values, connection timeouts. It didn't workout. So no clear idea.

## Steps to Reproduce (for bugs)

1. checkout code from https://github.com/yourarj/rust-vs-go-performance-benchmark
3. build docker images for rust and go from respective folder
4. create deployments in K8S with deployment and service file in k8s folder
5. benchmark with K6 with given scirpt.js file in test folder (k6 run script.js)

## Context

We are working on adoption of rust for web on massive scale. If we can mitigate this issue that would be great selling point for rust.
Why I see this as huge potential is if Rust can beat go on localhost by 4x (8k rps vs 45k rps) if we can replicate same over network, It would mean heavens for dev and product owner in terms of performance and cost.

## Your Environment

Testing environment for both.

MicroK8S Kubernetes cluster.
8cpu, 16gb, single pod exposed via node port.

Rust : version: 1.80.1, actix-web: 4.9, serde 1.0
Go: version 1.23

Load testing: Grafana K6 (vu : 10,000 (test/script.js)

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.