1

是否有推荐/最佳方法来生成 API 代理在每个策略上花费的时间报告?

目前我的做法是使用 JS 收集时间戳并计算每个策略的延迟,然后使用 stats 收集策略进行报告。

这对于性能检查来说太具有侵入性了,仅我的数据收集就增加了整体响应的时间。

在跨多个请求分析数据时,报告每个步骤所用时间的最佳无创方法是什么(跟踪模式下的 ui 确实基于单个请求显示每个策略的时间)

谢谢,

里卡多

4

4 回答 4

2

不支持公共 API 来计算此信息并返回汇总策略执行时间数据的良好、干净的响应。最好的办法是尝试使用 Analytics 报告request_processing_latencyresponse_processing_latency度量。(http://apigee.com/docs/content/analytics-reference)。然后,如果需要,利用跟踪来识别策略执行时间。

或者,您可以尝试下载跟踪会话并解析策略之间的时间戳以构建您的信息,但 UI 中的跟踪已经这样做了。

于 2014-02-04T22:42:50.083 回答
0

You consider using debug API. http://apigee.com/docs/api/debug-sessions

First you'll need to start a session for example:

curl -H "Content-type:application/octet-stream" -X POST https://api.enterprise.apigee.com/v1/organizations/{org}/environments/{env}/apis/{api_name}/revisions/{revision #}/debugsessions?"session=MySession" \ -u $ae_username:$ae_password

Get info from session:

curl -X GET -H "Accept:application/json" \ https://api.enterprise.apigee.com/v1/organizations/{org}/environments/{env}/apis/{api_name}/revisions/{revision #}/debugsessions/MySession/data \ -u $ae_username:$ae_password

于 2014-02-04T22:56:58.123 回答
0

可以使用 UI 中的调试跟踪找到每个策略花费的时间。

请参阅下面的屏幕截图。

正如 Diego 所说,您可以使用 debugsession API 调用来获取调试会话。

对于调试会话,您还可以定义要运行调试会话的时间限制。有了这个,如果您运行 1 小时的性能测试,您可以创建这么多时间的调试会话。

     curl -v -u jhans@apigee.com               http://management:8080/v1/organizations/weatherapi/environments/prod/apis/ForeCast/revisions/6/debugsessions?session=ab\&timeout=300 -X POST

您可以从 UI 下载跟踪会话,该会话将包含一个 XML,该 XML 具有每个策略的时间戳

     <Point id="Condition">
      <DebugInfo>
        <Timestamp>05-02-14 04:38:14:088</Timestamp>
        <Properties>
            <Property name="ExpressionResult">true</Property>
      </Point>
     <Point id="StateChange">

以上是从 UI 的调试跟踪中获取任何策略的时间戳的示例。

于 2014-02-05T04:59:13.023 回答
0

里卡多,这是我的建议。

免责声明:这是非常细致和耗时的。仅当您在性能问题上真正受阻并且没有其他解决方案时,我才会推荐这种方法。

假设您的代理几乎没有策略,即对外部服务和后端的服务调用。

因此,总延迟将是 (p1, p2, p3...) + 服务调用目标 + 后端所用时间的总和。

  1. 第一步是剔除外部依赖项。您可以使用空目标(Apigee 边缘上的存根代理,没有任何逻辑)来执行此操作。
  2. 现在禁用所有其他策略(策略架构上的 enable = false )。进行负载测试并针对存根端点对代理性能进行基准测试。同样在这个时候没有政策是有效的。
  3. 一次一个或几个开始激活策略,每次重新运行负载测试。
  4. 最后,您可以针对真实后端运行负载测试(删除存根)

在这一系列负载测试结束时,您将知道哪个策略、后端对性能影响最大。

于 2014-02-06T02:02:01.553 回答