当前位置: 首页 > 知识库问答 >
问题:

Istio速率限制错误(未配置请求配额请求计数)

颛孙国源
2023-03-14

以下是文档中此任务的Istio利率限制部分:https://istio.io/docs/tasks/policy-enforcement/rate-limiting/

我已经正确设置了bookinfo应用程序,我有一个productpage的虚拟服务(以及bookinfo的所有其他组件),我正在运行他们的代码,但速率限制不适合我。

每次我点击productpage的url时,它都能正常工作,没有任何速率限制。但是,每次点击url时,我都会在混合器日志中看到以下消息:

kubectl -n istio-system logs $(kubectl -n istio-system get pods -lapp=policy -o jsonpath='{.items[0].metadata.name}') -c mixer

2018-09-21T16:06:28.456449Z     warn    Requested quota 'requestcount' is not configured

虽然肯定设置了请求计数配额:

apiVersion: "config.istio.io/v1alpha2"
kind: quota
metadata:
  name: requestcount
  namespace: istio-system
spec:
  dimensions:
    source: request.headers["x-forwarded-for"] | "unknown"
    destination: destination.labels["app"] | destination.service | "unknown"
    destinationVersion: destination.labels["version"] | "unknown"

当我应用完整的yaml文件我看到:

 memquota.config.istio.io "handler" configured
 quota.config.istio.io "requestcount" configured
 quotaspec.config.istio.io "request-count" configured
 quotaspecbinding.config.istio.io "request-count" configured
 rule.config.istio.io "quota" configured

如果我在跑步时看到以下内容

kubectl get quota requestcount -n istio-system -o yaml

apiVersion: config.istio.io/v1alpha2
kind: quota
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
  {"apiVersion":"config.istio.io/v1alpha2","kind":"quota","metadata":{"annotations":{},"name":"requestcount","namespace":"istio-system"},"spec":{"dimensions":{"destination":"destination.labels[\"app\"] | destination.service | \"unknown\"","destinationVersion":"destination.labels[\"version\"] | \"unknown\"","source":"request.headers[\"x-forwarded-for\"] | \"unknown\""}}}
  clusterName: ""
  creationTimestamp: 2018-09-21T16:02:23Z
  generation: 1
  name: requestcount
  namespace: istio-system
  resourceVersion: "263792"
  selfLink: /apis/config.istio.io/v1alpha2/namespaces/istio-system/quotas/requestcount
  uid: ba4d2510-bdb7-11e8-b8c9-025000000001
spec:
  dimensions:
    destination: destination.labels["app"] | destination.service | "unknown"
    destinationVersion: destination.labels["version"] | "unknown"
    source: request.headers["x-forwarded-for"] | "unknown"

那么为什么我会收到这个消息呢?

共有1个答案

司马萧迟
2023-03-14

我遇到了这个问题,并通过确保规则配额

---
apiVersion: "config.istio.io/v1alpha2"
kind: quota
metadata:
  name: requestcount
  namespace: istio-system
spec:
  dimensions:
    source: request.headers["x-forwarded-for"] | "unknown"
    destination: destination.labels["app"] | destination.service | "unknown"
    destinationVersion: destination.labels["version"] | "unknown"
---
apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:
  name: quota
  namespace: istio-system
spec:
  # quota only applies if you are not logged in.
  # match: match(request.headers["cookie"], "user=*") == false
  actions:
  - handler: handler.memquota
    instances:
    - requestcount.quota
 类似资料:
  • 问题内容: API通常具有用户必须遵循的速率限制。举个例子,让我们50个请求/秒。连续的请求采取0.5-1秒,因此是来接近极限速度太慢。但是,使用aiohttp的并行请求超出了速率限制。 轮询API尽可能快地允许,需要限速并行调用。 例如,我发现到目前为止装饰,大约像这样: 这非常适用于连续通话。试图并行调用来实现这个按预期不起作用。 下面是一些代码示例: 这里的问题是,它会率限制 排队 的任务。

  • 问题内容: 我正在用GRequests和lxml在Python 2.7.3中编写一个小脚本,这将允许我从各个网站收集一些可收集的卡价格并进行比较。问题是网站之一限制了请求的数量,如果我超过了它,则会发回HTTP错误429。 有没有一种方法可以限制GRequestes中的请求数量,以使我不超过我指定的每秒请求数量?另外-如果发生HTTP 429,如何让GRequestes在一段时间后重试? 附带说明

  • 我正在用Python 2.7.3编写一个小脚本,其中包含GRequests和lxml,它将允许我从各种网站收集一些可收集的卡价格并进行比较。问题是其中一个网站限制了请求的数量,如果我超过它,就会发回HTTP错误429。 有没有办法在grequests中增加限制请求数,这样我就不会超过我指定的每秒请求数?还有——如果HTTP 429出现,我如何让GRequestes在一段时间后重试? 另一方面,他们

  • 我正在使用ProjectReactor使用rest从web服务加载数据。这是与多个线程并行完成的。我开始达到web服务的速率限制,因此我希望每秒最多发送10个请求,以避免出现这些错误。用Reactor我该怎么做? 使用zipWith(Mono.delayMillis(100))?还是有更好的办法? 非常感谢。

  • 全局速率限制架构概述。 { "stage": "...", "disable_key": "...", "actions": [] } stage (optional, integer) 指在过滤器中设置的阶段。速率限制配置仅适用于具有相同阶段编号的过滤器。默认的阶段编号是0。 注意:对于阶段编号,过滤器支持0-10的范围。 disable_key (optional, string

  • 除了配置连接层和客户端层,还可以基于每次请求来进行相关设置。具体来说是在请求体中指定相关参数数组。 忽略异常 Elasticsearch-PHP 的类库是会对普通的问题抛出异常的。这些异常跟 Elasticsearch 返回的 HTTP 响应码一一对应。例如,获取一个不存在的文档会抛出 MissingDocument404Exception 。 异常对于处理一些问题(如找不到文档、语法错误、版本冲