๐ฅ_๊ณ ๋์์ฑ_ํ๋ ์์ํฌ_์ ํ_๊ธฐ์ _๊ฒฐ์ [20260102233018]
Source: Dev.to
๋ฒ์ญํ ํ ์คํธ๊ฐ ์ ๊ณต๋์ง ์์์ต๋๋ค. ๋ฒ์ญ์ด ํ์ํ ๋ด์ฉ์ ์๋ ค์ฃผ์๋ฉด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค.
๐ ์ค์ ์ด์ ํ๊ฒฝ ๊ณผ์
์ฐ๋ฆฌ ์ ์์๊ฑฐ๋ ํ๋ซํผ ํ๋ก์ ํธ์์ ๋ช ๊ฐ์ง ์ ํ์ ์ธ ์ฑ๋ฅ ๊ณผ์ ์ ์ง๋ฉดํ์ต๋๋ค:
| ์๋๋ฆฌ์ค | ์ค๋ช |
|---|---|
| ๐ ํ๋์ ์ธ์ผ | ์ฃผ์ ํ๋ก๋ชจ์ (์: ๋์ผโฏ11) ๊ธฐ๊ฐ ๋์ ์ ํ ์์ธ ํ์ด์ง๋ ์ด๋น ์์ญ๋ง ๊ฑด์ ์์ฒญ์ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ์ด๋ ํ๋ ์์ํฌ์ ๋์ ์ฒ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๊ทน์ฌํ ๋ถ๋ด์ ์ค๋๋ค. |
| ๐ณ ๊ฒฐ์ ์์คํ | ๊ฒฐ์ ์๋น์ค๋ ๋ง์ ์์ ์งง์ ์๋ช ์ฐ๊ฒฐ์ ๋ฐ์ผ๋ฉฐ, ๊ฐ๊ฐ ๋น ๋ฅธ ์๋ต์ด ํ์ํฉ๋๋ค. ์ด๋ ์ฐ๊ฒฐ ๊ด๋ฆฌ ํจ์จ์ฑ๊ณผ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ ๋ถ๋ด์ ์ค๋๋ค. |
| ๐ ์ค์๊ฐ ํต๊ณ | ์ฐ๋ฆฌ๋ ์ค์๊ฐ์ผ๋ก ์ฌ์ฉ์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ง๊ณํด์ผ ํ๋ฉฐ, ์ด๋ ๋์ ์ฒ๋ฆฌ๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์๊ตฌํฉ๋๋ค. |
Source: โฆ
๐ ํ๋ก๋์ โํ๊ฒฝ ์ฑ๋ฅ ๋ฐ์ดํฐ ๋น๊ต
๐ KeepโAlive ํ์ฑํ (LongโConnection ์๋๋ฆฌ์ค)
Longโconnection ํธ๋ํฝ์ ์ ์ฒด ๋ถํ์ **>โฏ70โฏ%**๋ฅผ ์ฐจ์งํฉ๋๋ค. ์๋ ํ๋ ์ ํ ์์ธ ํ์ด์ง ์ ๊ทผ์ ์๋ฎฌ๋ ์ด์
ํ wrk ์คํธ๋ ์ค ํ
์คํธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
| Framework | QPS | ํ๊ท ์ง์ฐ์๊ฐ | P99 ์ง์ฐ์๊ฐ | ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ | CPU ์ฌ์ฉ๋ฅ |
|---|---|---|---|---|---|
| Tokio | 340,130.92 | 1.22โฏms | 5.96โฏms | 128โฏMB | 45โฏ% |
| Hyperlane | 334,888.27 | 3.10โฏms | 13.94โฏms | 96โฏMB | 42โฏ% |
| Rocket | 298,945.31 | 1.42โฏms | 6.67โฏms | 156โฏMB | 48โฏ% |
| RustโฏStdโฏLib | 291,218.96 | 1.64โฏms | 8.62โฏms | 84โฏMB | 44โฏ% |
| Gin | 242,570.16 | 1.67โฏms | 4.67โฏms | 112โฏMB | 52โฏ% |
| GoโฏStdโฏLib | 234,178.93 | 1.58โฏms | 1.15โฏms | 98โฏMB | 49โฏ% |
| NodeโฏStdโฏLib | 139,412.13 | 2.58โฏms | 837.62โฏยตs | 186โฏMB | 65โฏ% |
ab ์คํธ๋ ์ค ํ
์คํธ โ ๊ฒฐ์ ์์ฒญ (shortโconnection)
| Framework | QPS | ํ๊ท ์ง์ฐ์๊ฐ | ์ค๋ฅ ๋น์จ | ์ฒ๋ฆฌ๋ | ์ฐ๊ฒฐ ์ค์ ์๊ฐ |
|---|---|---|---|---|---|
| Hyperlane | 316,211.63 | 3.162โฏms | 0โฏ% | 32,115.24โฏKB/s | 0.3โฏms |
| Tokio | 308,596.26 | 3.240โฏms | 0โฏ% | 28,026.81โฏKB/s | 0.3โฏms |
| Rocket | 267,931.52 | 3.732โฏms | 0โฏ% | 70,907.66โฏKB/s | 0.2โฏms |
| RustโฏStdโฏLib | 260,514.56 | 3.839โฏms | 0โฏ% | 23,660.01โฏKB/s | 21.2โฏms |
| GoโฏStdโฏLib | 226,550.34 | 4.414โฏms | 0โฏ% | 34,071.05โฏKB/s | 0.2โฏms |
| Gin | 224,296.16 | 4.458โฏms | 0โฏ% | 31,760.69โฏKB/s | 0.2โฏms |
| NodeโฏStdโฏLib | 85,357.18 | 11.715โฏms | 81.2โฏ% | 4,961.70โฏKB/s | 33.5โฏms |
๐ KeepโAlive ๋นํ์ฑํ (ShortโConnection ์๋๋ฆฌ์ค)
Shortโconnection ํธ๋ํฝ์ ์ ์ฒด ๋ถํ์ **โโฏ30โฏ%**๋ฅผ ์ฐจ์งํ์ง๋ง ๊ฒฐ์ , ๋ก๊ทธ์ธ ๋ฑ์ ํ์์ ์ ๋๋ค.
wrk ์คํธ๋ ์ค ํ
์คํธ โ ๋ก๊ทธ์ธ ์์ฒญ
| Framework | QPS | ํ๊ท ์ง์ฐ์๊ฐ | ์ฐ๊ฒฐ ์ค์ ์๊ฐ | ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ | ์ค๋ฅ ๋น์จ |
|---|---|---|---|---|---|
| Hyperlane | 51,031.27 | 3.51โฏms | 0.8โฏms | 64โฏMB | 0โฏ% |
| Tokio | 49,555.87 | 3.64โฏms | 0.9โฏms | 72โฏMB | 0โฏ% |
| Rocket | 49,345.76 | 3.70โฏms | 1.1โฏms | 88โฏMB | 0โฏ% |
| Gin | 40,149.75 | 4.69โฏms | 1.3โฏms | 76โฏMB | 0โฏ% |
| GoโฏStdโฏLib | 38,364.06 | 4.96โฏms | 1.5โฏms | 68โฏMB | 0โฏ% |
| RustโฏStdโฏLib | 30,142.55 | 13.39โฏms | 39.09โฏms | 56โฏMB | 0โฏ% |
| NodeโฏStdโฏLib | 28,286.96 | 4.76โฏms | 3.48โฏms | 92โฏMB | 0.1โฏ% |
ab ์คํธ๋ ์ค ํ
์คํธ โ ๊ฒฐ์ ์ฝ๋ฐฑ
| Framework | QPS | ํ๊ท ์ง์ฐ์๊ฐ | ์ค๋ฅ ๋น์จ | ์ฒ๋ฆฌ๋ | ์ฐ๊ฒฐ ์ฌ์ฌ์ฉ ๋น์จ |
|---|---|---|---|---|---|
| Tokio | 51,825.13 | 19.296โฏms | 0โฏ% | 4,453.72โฏKB/s | 0โฏ% |
| Hyperlane | 51,554.47 | 19.397โฏms | 0โฏ% | 5,387.04โฏKB/s | 0โฏ% |
| Rocket | 49,621.02 | 20.153โฏms | 0โฏ% | 11,969.13โฏKB/s | 0โฏ% |
| GoโฏStdโฏLib | 47,915.20 | 20.870โฏms | 0โฏ% | 6,972.04โฏKB/s | 0โฏ% |
| Gin | 47,081.05 | 21.240โฏms | 0โฏ% | 6,436.86โฏKB/s | 0โฏ% |
| NodeโฏStdโฏLib | 44,763.11 | 22.340โฏms | 0โฏ% | 4,983.39โฏKB/s | 0โฏ% |
| RustโฏStdโฏLib | 31,511.00 | 31.735โฏms | 0โฏ% | 2,707.98โฏKB/s | 0โฏ% |
๐ฏ ์ฌ์ธต ๊ธฐ์ ๋ถ์
๐ ๋ฉ๋ชจ๋ฆฌโ๊ด๋ฆฌ ๋น๊ต
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ํ๋ก๋์ ํ๊ฒฝ์์ ํ๋ ์์ํฌ ์์ ์ฑ์ ๊ฒฐ์ ์ง๋ ํต์ฌ ์์์ ๋๋ค.
- Hyperlane Framework โ ๊ฐ์ฒดโํ๋ง๊ณผ ์ ๋กโ์นดํผ ์ค๊ณ๋ฅผ ํ์ฉํฉ๋๋ค. 1โฏMโ๋์โ์ฐ๊ฒฐ ํ ์คํธ์์ 96โฏMB๋ง ์ฌ์ฉํ์ผ๋ฉฐ, ์ด๋ ๋ชจ๋ ๊ฒฝ์์ฌ๋ณด๋ค ํจ์ฌ ์ ์ ์์น์ ๋๋ค.
- Node.js โ V8 ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ๋์ ๋๋ ์ผ์ ์ ์ง๋ฅผ ์ผ์ผํต๋๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ โโฏ1โฏGB์ ๋ฌํ๋ฉด GC ์ผ์ ์ ์ง ์๊ฐ์ด 200โฏms๋ฅผ ๋์ ์ ์์ด ์ฌ๊ฐํ ์ง์ฐ ์คํ์ดํฌ๋ฅผ ์ด๋ํฉ๋๋ค.
โก ์ฐ๊ฒฐโ๊ด๋ฆฌ ํจ์จ์ฑ
| ์๋๋ฆฌ์ค | ๊ด์ฐฐ ๋ด์ฉ |
|---|---|
| ๋จ๊ธฐโ์ฐ๊ฒฐ | Hyperlane์ ์ฐ๊ฒฐ ์ค์ ์๊ฐ์ 0.8โฏms๋ก, RustโฏStdโฏLib์ 39.09โฏms๋ณด๋ค ํ์ ํ ๋ฎ์ TCPโ์คํ ์ต์ ํ๊ฐ ์ ๊ทน์ ์์ ๋ณด์ฌ์ค๋๋ค. |
| ์ฅ๊ธฐโ์ฐ๊ฒฐ | Tokio๊ฐ P99 ์ง์ฐ ์๊ฐ (5.96โฏms) ์ต์ ์น๋ฅผ ๊ธฐ๋กํ์ผ๋ฉฐ, ์ด๋ ์ฐ๊ฒฐ ์ฌ์ฌ์ฉ ์ฒ๋ฆฌ์ ๋ฐ์ด๋จ์ ๋ํ๋ด์ง๋ง ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ Hyperlane๋ณด๋ค ๋์ต๋๋ค. |
๐ง CPUโ์ฌ์ฉ ํจ์จ์ฑ
- Hyperlane Framework โ ์ฅ๊ธฐโ์ฐ๊ฒฐ ๋ฐ ๋จ๊ธฐโ์ฐ๊ฒฐ ์ํฌ๋ก๋ ๋ชจ๋์์ **CPU ์ฌ์ฉ๋ฅ ์ด ๊ฐ์ฅ ๋ฎ์ (โโฏ42โฏ%)**์ ์ง์์ ์ผ๋ก ๋ณด์ฌ, CPU ์ฌ์ดํด๋น ์์ ๋์ด ๊ฐ์ฅ ๋์ต๋๋ค.
- ๊ธฐํ ํ๋ ์์ํฌ(Tokio, Rocket, Go ๋ฑ)๋ 44โฏ%โ55โฏ% ๋ฒ์์ ๋จธ๋ฌด๋ฅด๊ณ , Node.js๊ฐ ๊ฐ์ฅ ๋์ **โโฏ65โฏ%**๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
๐ ์์ฝ
- Hyperlane โ ๋ฎ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋, ๋น ๋ฅธ ์ฐ๊ฒฐ ์ค์ , ์ต์ํ์ CPU ์ฌ์ฉ๋์ ๋ชจ๋ ๊ฐ์ถ ์ต๊ณ ์ ๊ท ํ์ ์ ๊ณตํ๋ฉฐ, ๊ณ ๋์์ฑยท์ฅ๊ธฐ ์ฐ๊ฒฐ ์ํฌ๋ก๋(์: ํ๋์ ์ธ์ผ ํ์ด์ง)์ ์ด์์ ์ ๋๋ค.
- Tokio โ ์ฅ๊ธฐ ์ฐ๊ฒฐ์์ ์ง์ฐ ์๊ฐ ์์ ์ฑ์ด ๋ฐ์ด๋๋ฉฐ, ๋ฎ์ ๊ผฌ๋ฆฌ ์ง์ฐ ์๊ฐ์ด ๊ฐ์ฅ ์ค์ํ ์๋น์ค์ ์ ํฉํฉ๋๋ค.
- Node.js โ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ผ๋ก ์ธํ ์ง์ฐ ๋ฐ ๋์ ๋ฉ๋ชจ๋ฆฌ/CPU ์ฌ์ฉ๋ ๋๋ฌธ์ ์ด๊ณ ๋์์ฑ ์๋๋ฆฌ์ค์์๋ ์ฃผ์ํด์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
- Go์ Gin โ ๊ด์ฐฎ์ ์ฑ๋ฅ์ ์ ๊ณตํ์ง๋ง ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ๊ณผ CPU ํ์ฉ๋ ๋ฉด์์ Hyperlane์ ๋ค์ฒ์ง๋๋ค.
ํต์ฌ: ํธ๋ํฝ ํจํด(์ฅ๊ธฐ vs. ๋จ๊ธฐ ์ฐ๊ฒฐ)์ ๊ธฐ์ค์ผ๋ก ์คํ์ ์ ํํ๊ณ , ์ง์ฐ ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ, CPU ์์ ๊ฐ์ ํ์ฉ ๊ฐ๋ฅํ ํธ๋ ์ด๋์คํ๋ฅผ ๊ณ ๋ คํ์ธ์.
Node.js CPU Issues
Node.js ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ V8 ์์ง์ ์ธํฐํ๋ฆฌํ ์ด์ , ์คํ ๋ฐ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ค๋ฒํค๋ ๋๋ฌธ์ CPU ์ฌ์ฉ๋์ด **65โฏ%**๊น์ง ๋์์ง ์ ์์ต๋๋ค. ๊ณ ๋์์ฑ ์๋๋ฆฌ์ค์์๋ ์ด๋ ๊ณผ๋ํ ์๋ฒ ๋ถํ๋ฅผ ์ด๋ํฉ๋๋ค.
๐ป ์ฝ๋ ๊ตฌํ ์ธ๋ถ ๋ถ์
๐ข Node.js ๊ตฌํ์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์
const http = require('http');
const server = http.createServer((req, res) => {
// This simple handler function actually has multiple performance issues
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello');
});
server.listen(60000, '127.0.0.1');
๋ฌธ์ ๋ถ์
| ๋ฌธ์ | ์ค๋ช |
|---|---|
| ๋น๋ฒํ ๋ฉ๋ชจ๋ฆฌ ํ ๋น | ๊ฐ ์์ฒญ๋ง๋ค ์๋ก์ด ์๋ต ๊ฐ์ฒด๊ฐ ์์ฑ๋ฉ๋๋ค. |
| ๋ฌธ์์ด ์ฐ๊ฒฐ ์ค๋ฒํค๋ | res.end()๊ฐ ๋ด๋ถ ๋ฌธ์์ด ์ฐ์ฐ์ ์ํํฉ๋๋ค. |
| ์ด๋ฒคํธ ๋ฃจํ ์ฐจ๋จ | ๋๊ธฐ ์์ ์ด ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ์ฐจ๋จํฉ๋๋ค. |
| ์ฐ๊ฒฐ ํ ๋ถ์กฑ | ๊ฐ ์ฐ๊ฒฐ์ด ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. |
๐น Go ๊ตฌํ์ ๋์์ฑ ์ฅ์
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":60000", nil)
}
์ฅ์ ๋ถ์
| ์ฅ์ | ์ค๋ช |
|---|---|
| ๊ฐ๋ฒผ์ด ๊ณ ๋ฃจํด | ์์ฒ ๊ฐ์ ๊ณ ๋ฃจํด์ ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๋ค. |
| ๋ด์ฅ๋ ๋์์ฑ ์์ ์ฑ | ์ฑ๋์ด ๋ ์ด์ค ์กฐ๊ฑด์ ๋ฐฉ์งํฉ๋๋ค. |
| ์ต์ ํ๋ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ | net/http๋ ์ฑ๋ฅ์ ๋ง๊ฒ ๊ณ ๋๋ก ์ต์ ํ๋์์ต๋๋ค. |
๋จ์ ๋ถ์
| ๋จ์ | ์ค๋ช |
|---|---|
| GC ์๋ฐ | ๋ง์ ๋จ๋ช ๊ฐ์ฒด๊ฐ GC ์์ ๋์ ์ฆ๊ฐ์ํต๋๋ค. |
| ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ | ๊ณ ๋ฃจํด ์คํ์ ๋น๊ต์ ํฐ ํฌ๊ธฐ๋ก ์์ํฉ๋๋ค. |
| ์ฐ๊ฒฐ ๊ด๋ฆฌ | ๋ด์ฅ๋ ์ฐ๊ฒฐ ํ์ ์ ์ฐ์ฑ์ด ๋ถ์กฑํฉ๋๋ค. |
๐ Rust ๊ตฌํ์ ์์คํ ์์ค ์ต์ ํ
use std::io::prelude::*;
use std::net::{TcpListener, TcpStream};
fn handle_client(mut stream: TcpStream) {
let response = "HTTP/1.1 200 OK\r\n\r\nHello";
stream.write_all(response.as_bytes()).unwrap();
stream.flush().unwrap();
}
fn main() {
let listener = TcpListener::bind("127.0.0.1:60000").unwrap();
for stream in listener.incoming() {
let stream = stream.unwrap();
handle_client(stream);
}
}
์ฅ์ ๋ถ์
| ์ฅ์ | ์ค๋ช |
|---|---|
| ์ ๋ก ๋น์ฉ ์ถ์ํ | ์ปดํ์ผ ์ ์ต์ ํ๊ฐ ๋ฐํ์ ์ค๋ฒํค๋๋ฅผ ์์ฑ๋๋ค. |
| ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ | ์์ ๊ถ์ด ๋ฉ๋ชจ๋ฆฌ ๋์์ ๋ฐ์ดํฐ ๋ ์ด์ค๋ฅผ ๋ฐฉ์งํฉ๋๋ค. |
| GC ์ ์ง ์์ | ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์์ด ์์ ์ ์ธ ์ง์ฐ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค. |
๋จ์ ๋ถ์
| ๋จ์ | ์ค๋ช |
|---|---|
| ๊ฐ๋ฐ ๋ณต์ก์ฑ | ๋ผ์ดํํ์ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. |
| ์ปดํ์ผ ์๊ฐ | ๋ณต์กํ ์ ๋ค๋ฆญ์ด ๋น๋ ์๊ฐ์ ์ฆ๊ฐ์ํต๋๋ค. |
| ์ํ๊ณ ์ฑ์๋ | Go๋ Node.js์ ๋นํด ์์ ์ํ๊ณ์ ๋๋ค. |
์ ํ๋ ๊ณ ๋์์ฑ ์๋ฒ ์์ ์ ๋ํ Node.js, Go, Rust์ ์ฑ๋ฅ ํน์ฑ์ ๊ฐ๊ฒฐํ๊ฒ ๋น๊ตํฉ๋๋ค.
Source: โฆ
๐ฏ ํ๋ก๋์ ํ๊ฒฝ ๋ฐฐํฌ ๊ถ์ฅ ์ฌํญ
๐ช ์ ์์๊ฑฐ๋ ์์คํ ์ํคํ ์ฒ
์ด์ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ๋ ์ด์ด๋ ์ํคํ ์ฒ๋ฅผ ๊ถ์ฅํฉ๋๋ค.
1. ์ก์ธ์ค ๋ ์ด์ด
- Framework:
Hyperlane - Connection pool:
CPU ์ฝ์ด ์โฏรโฏ2โ4 - KeepโAlive: ์ฐ๊ฒฐ ์ค์ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ธฐ ์ํด ํ์ฑํ
2. ๋น์ฆ๋์ค ๋ ์ด์ด
- Framework:
Tokio(๋น๋๊ธฐ ์์ ) - Timeouts: ๊ฐ ์๋น์ค ํธ์ถ์ ํฉ๋ฆฌ์ ์ธ ๊ฐ ์ค์
- Reliability: ์ํท ๋ธ๋ ์ด์ปค ๋ฉ์ปค๋์ฆ ๊ตฌํ
3. ๋ฐ์ดํฐ ๋ ์ด์ด
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ์ ์ํ ์ปค๋ฅ์ ํ ์ฌ์ฉ
- ์ฝ๊ธฐโ์ฐ๊ธฐ ๋ถ๋ฆฌ ์ ์ฉ
- ์ฝ๊ธฐ/์ฐ๊ธฐ ํจํด์ ๋ง๋ ์บ์ฑ ์ ๋ต ์ ํ
๐ณ ๊ฒฐ์ ์์คํ ์ต์ ํ
์ฐ๊ฒฐ ๊ด๋ฆฌ
- Hyperlane์ ๋จ๊ธฐ ์ฐ๊ฒฐ ์ต์ ํ ์ฌ์ฉ
- TCP Fast Open ํ์ฑํ
- ๊ฐ๋ฅํ ํ ์ฐ๊ฒฐ ์ฌ์ฌ์ฉ
์ค๋ฅ ์ฒ๋ฆฌ
- ๋ฐฑ์คํ๋ฅผ ํฌํจํ ์ฌ์๋ ๋ก์ง ๊ตฌํ
- ์ ์ ํ ํ์์์ ๊ฐ ์ค์
- ์ฌํ ๋ถ์์ ์ํ ์์ธ ์ค๋ฅ ์ ๋ณด ๋ก๊ทธ ๊ธฐ๋ก
๋ชจ๋ํฐ๋ง ๋ฐ ์๋ฆผ
- ์ค์๊ฐ์ผ๋ก QPS์ ๋ ์ดํด์ ์ถ์
- ๋ช ํํ ์๋ฆผ ์๊ณ๊ฐ ์ ์ (์: ๋ ์ดํด์โฏ>โฏ200โฏms)