Repository navigation
v0.4.5
修正
- UDP のセッションのメモリ(#268):平文の UDP のセッションが 1 つずつ 64 KiB の受信バッファを持ち、セッションが続くあいだ(
udp_idle)メモリに残っていました。転送先からの返事はワーカーのスレッドごとに 1 つのバッファで受け、待たずにクライアントへ送るようにしました。ランダムな 12 万リクエストの負荷試験で、1 セッションあたり約 58 KiB → 約 12 KiB(UDP のセッション 14,639 で VmRSS 867 MiB → 23,080 で 289 MiB)。DTLS のセッションは今までどおりです。 - 拒んだ UDP の転送先に気づく:転送先が ICMP の到達不能(ポートが閉じている)を返したとき、セッションがそれを読まず、宛先を外していませんでした。今は読んで、宛先が複数のルールでは外します(
refused)。
UI: TCP-UDP-rproxy-ui v0.4.2 · Kubernetes: rproxy-gateway v0.4.6
Fixed
- UDP session memory (#268): every plain UDP session held its own 64 KiB receive buffer, resident for as long as the session lived (
udp_idle). Backend replies are now read into one buffer per worker thread and sent on to the client without waiting. In a stress test of 120,000 random requests, memory per session went from about 58 KiB to about 12 KiB (14,639 UDP sessions at VmRSS 867 MiB before; 23,080 at 289 MiB after). DTLS sessions are unchanged. - Refusing UDP backends are noticed: when a backend answered with ICMP port unreachable, the session did not read it and did not take the target out. It now does, and rules with several targets take that target out (
refused).
UI: TCP-UDP-rproxy-ui v0.4.2 · Kubernetes: rproxy-gateway v0.4.6