java - 如何为 App Engine/Java 上的单个请求暂停 appstats?

标签 java google-app-engine appstats

我通常在我的沙盒 appid 上全时运行 appstats。但是,我有一个复杂的操作(基本上是重建股票数据库)导致 appstats 炸毁我的实例,抛出 OutOfMemoryErrors。即使具有更大的实例大小,它仍然会失败。 Appstats 只是需要太多 RAM。

我不需要此请求的 appstats。理想情况下,我会在负责收集 appstats 的任何 ThreadLocal 对象上调用一个方法,并告诉它转动拇指几分钟。

我考虑过扩展 AppstatsFilter 以忽略某些 URL,但有问题的请求作为延迟任务执行并通过路径识别它有些复杂。

如何让 appstats 暂停?

以防万一不清楚:我现在正在做的是上传一个禁用了 appstats 的应用程序版本,运行我的任务,然后上传一个启用了 appstats 的版本。我不想这样做。

最佳答案

我所做的是编写自己的 CustomAppstatsFilter 并排除某些 url。

public class CustomAppstatsFilter extends AppstatsFilter {

  @Override
  public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {

    if (request instanceof HttpServletRequest) {
        String url = ((HttpServletRequest) request).getRequestURL().toString();

        // We do not want these to show up in appstats
        if ((url.contains("appstats"))
                || url.contains("_ah/")
                || url.contains("cron/")
                || url.contains("batch/")) {
            chain.doFilter(request, response);
            return;
        } else {
            super.doFilter(request, response, chain);
        }
    }
  }
}

编辑 - 这可以与 ZiglioNZ 很好的答案相结合。

<!-- Appstats filter for profiling application -->
<filter>
    <filter-name>appstats</filter-name>
    <filter-class>my.company.filter.CustomAppstatsFilter</filter-class>
    <init-param>
        <param-name>maxLinesOfStackTrace</param-name>
        <param-value>5</param-value>
    </init-param>
</filter>
<filter-mapping>
    <!-- excludes are in CustomAppstatsFilter -->
    <filter-name>appstats</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

关于java - 如何为 App Engine/Java 上的单个请求暂停 appstats?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10051446/

相关文章:

python - Google App Engine 应用统计

Java : Override not needed methods inside classes - Update

java - 适用于 Android 中小型应用程序的线程外数据库接口(interface)

java - JNI :how to call c++ function from Java Native Method

android - 使用 Python 进行 Unicode URL 编码/解码

java - 尝试运行我的项目时抛出 BeanCreationException

google-app-engine - Appstats 值是什么意思?

python - 谷歌应用引擎过多的数据存储小操作

java - 我的其余服务无法识别授权 :Bearer

google-app-engine - 使用 Go 管理和包含多个文件的最佳方法是什么?