Comments (5)
cc @wbpcode who has been looking at this recently
from envoy.
could you provide a configuration about your test?
from envoy.
spec:
configPatches:
- applyTo: HTTP_FILTER
match:
context: GATEWAY
listener:
filterChain:
filter:
name: envoy.filters.network.http_connection_manager
patch:
operation: INSERT_BEFORE
value:
name: envoy.filters.http.local_ratelimit
typed_config:
'@type': type.googleapis.com/udpa.type.v1.TypedStruct
type_url: type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit
value:
stat_prefix: http_local_rate_limiter
- applyTo: HTTP_ROUTE
match:
context: GATEWAY
patch:
operation: MERGE
value:
route:
rate_limits:
- actions:
- remote_address: {}
- actions:
- header_value_match:
descriptor_value: healthcheck
expect_match: false
headers:
- name: :path
string_match:
ignore_case: true
prefix: /healthcheck/
typed_per_filter_config:
envoy.filters.http.local_ratelimit:
'@type': type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit
always_consume_default_token_bucket: false
descriptors:
- entries:
- key: header_match
value: healthcheck
token_bucket:
fill_interval: 1s
max_tokens: 100
tokens_per_fill: 100
enable_x_ratelimit_headers: DRAFT_VERSION_03
filter_enabled:
default_value:
denominator: HUNDRED
numerator: 100
runtime_key: http_local_rate_limiter
filter_enforced:
default_value:
denominator: HUNDRED
numerator: 0
runtime_key: http_local_rate_limiter
response_headers_to_add:
- append: false
header:
key: x-local-rate-limit
value: "true"
stat_prefix: http_local_rate_limiter
token_bucket:
fill_interval: 1s
max_tokens: 1100
tokens_per_fill: 1100
workloadSelector:
labels:
app.kubernetes.io/component: istio-ingressgateway
This was the configuration for the test
from envoy.
cc @cam634 The configuration seems fine. From the configuration, the requests with /healthcheck/
path will be limited to 100/s and other request will be limited to 1100/s? Right?
Are you ensure the test requests have the expected prefix? Could you also give an example?
(PS: the current local rate limit use a timer based token bucket which sometime are inaccurate. But you results still be weird because the difference is too big)
from envoy.
Yeah that's exactly what we are trying to do,
Are you ensure the test requests have the expected prefix? Could you also give an example?
This was an original thought of mine but something that debunked that for me was we hold at the right number that should be rate limited until about 2,000 RPS. We were calling a path called /ping.
I have not looked in the current code but could the filter possibly be overwhelmed at certain rates. Since it doesn't directly correlate with RPS coming in that it's leaking up.
We are going to test at more realistic number but am trying to understand why it would happen at the lower levels even
from envoy.
Related Issues (20)
- Newer release available `com_github_bufbuild_buf`: v1.34.0 (current: v1.32.2)
- Newer release available `com_github_datadog_dd_trace_cpp`: v0.2.2 (current: v0.2.1)
- Newer release available `io_opentelemetry_cpp`: v1.16.0 (current: v1.14.2)
- Could you add some examples about outlier_detection in the examples directory?
- List of matchers for route HOT 2
- API Key auth HOT 1
- Callback for request cancelled from client HOT 2
- Exposing Wasm VM state in a health check endpoint
- Graceful shutdown with HTTP2 CONNECT HOT 4
- VHost metadata in logs and attributes HOT 1
- Support matching route metadata in the HTTP RBAC filter HOT 1
- Does RequestMirrorPolicy support xDS? HOT 1
- Newer release available `com_google_protobuf`: v27.2 (current: v25.3)
- [overload] Fix extension name of Downstream connections monitor
- observability_mode is not working on ext_proc filter
- HTTP1.1 unsupported protocal HOT 1
- Newer release available `build_bazel_rules_apple`: 3.6.0 (current: 3.1.1)
- Question: Can L4 `tcp` proxy have same behaviour as `udp` proxy with `use_per_packet_load_balancing=true`?
- Impossible to parse stat tags with clusters containing `.` in the name
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from envoy.