【问题标题】:How to measure the cost of requests (cpm_usd) programmatically?如何以编程方式测量请求的成本(cpm_usd)?
【发布时间】:2013-04-17 14:24:05
【问题描述】:

我想跟踪到达我的GAE 前端实例的所有请求的cpm_usd value。我在我的应用程序的logs 中看到了 cpm_usd 标头。 但是有没有办法在运行时访问这些数字以绘制它们?我想为每个端点创建一个近乎实时的成本指标。

  • /rest/foo1: $0.000011
  • /rest/foo2:$0.000013
  • /rest/bar1:$0.000014
  • /rest/bar2:0.000016 美元

是否有可信赖的测试程序来执行此操作?如果没有,是否有另一种不涉及解析我的日志文件的方法?还是只能通过后台解析日志来获取这些数字?

更新

here 所述,我尝试添加一个sitebricks 请求过滤器来拦截 {add,set}Header() 调用。

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    chain.doFilter(request, new HttpServletResponseWrapper((HttpServletResponse) response) {
        @Override
        public void setHeader(String name, String value) {
            if ("X-AppEngine-Estimated-CPM-US-Dollars".equals(name)) {
                // log request costs
            }
            super.setHeader(name, value);
        }

        @Override
        public void addHeader(String name, String value) {
            if ("X-AppEngine-Estimated-CPM-US-Dollars".equals(name)) {
                // log request costs
            }
            super.addHeader(name, value);
        }
    });
}

我假设标题要么具有不同的名称,要么 GAE 以不同的方式设置标题。无论哪种情况,我都没有看到成本标头被捕获。

【问题讨论】:

    标签: java python google-app-engine performance-testing


    【解决方案1】:

    标头由位于您的实例前面的应用程序服务器添加,因此您无法从代码中访问此标头。

    您将不得不解析日志文件,并且可以考虑使用log2bq 来执行此操作。

    【讨论】:

    • 如果我无法访问标题,是否有办法接收每个 URL 的成本信息?如果没有,会有类似的可信测试程序吗?这样的 API 不一定必须以美元返回成本。主要动机是观察“成本”随时间的变化趋势,并比较每个 URL 的“成本”。
    猜你喜欢
    • 2018-04-30
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 2022-01-23
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多