Java 如何以编程方式度量请求成本(cpm_usd)?
我希望跟踪到达前端实例的所有请求。我在我的应用程序中看到了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 是否有可信的测试程序来执行此操作?如果没有,是否有其他不涉及解析日志文件的方法?或者我只能通过在后台解析日志来获取这些数字 更新 如上所述,我尝试添加一个请求过
- /其余/foo1:$0.000011
- /其余/foo2:$0.000013
- /其余/bar1:$0.000014
- /其余/bar2:$0.000016
我假设标头具有不同的名称,或者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);
}
});
}