Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以编程方式度量请求成本(cpm_usd)?_Java_Python_Google App Engine_Performance Testing - Fatal编程技术网

Java 如何以编程方式度量请求成本(cpm_usd)?

Java 如何以编程方式度量请求成本(cpm_usd)?,java,python,google-app-engine,performance-testing,Java,Python,Google App Engine,Performance Testing,我希望跟踪到达前端实例的所有请求。我在我的应用程序中看到了cpm_usd标题但是有没有一种方法可以在运行时访问这些数字,以便将它们绘制成图表?我想为每个端点创建一个近乎实时的成本度量 /其余/foo1:$0.000011 /其余/foo2:$0.000013 /其余/bar1:$0.000014 /其余/bar2:$0.000016 是否有可信的测试程序来执行此操作?如果没有,是否有其他不涉及解析日志文件的方法?或者我只能通过在后台解析日志来获取这些数字 更新 如上所述,我尝试添加一个请求过

我希望跟踪到达前端实例的所有请求。我在我的应用程序中看到了cpm_usd标题但是有没有一种方法可以在运行时访问这些数字,以便将它们绘制成图表?我想为每个端点创建一个近乎实时的成本度量

  • /其余/foo1:$0.000011
  • /其余/foo2:$0.000013
  • /其余/bar1:$0.000014
  • /其余/bar2:$0.000016
是否有可信的测试程序来执行此操作?如果没有,是否有其他不涉及解析日志文件的方法?或者我只能通过在后台解析日志来获取这些数字

更新

如上所述,我尝试添加一个请求过滤器,该过滤器拦截{add,set}Header()调用


我假设标头具有不同的名称,或者GAE以不同的方式设置标头。在任何一种情况下,我都看不到成本标头被捕获。

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


你必须解析日志文件,并且可以考虑使用它。

如果我不能访问报头,那么有没有办法接收每个URL成本信息?如果没有,会不会有类似的可信测试程序?这样的API不一定要以美元为单位返回成本。主要的动机是观察“成本”随时间的变化趋势,并比较每个URL的“成本”。
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);
        }
    });
}