当前位置: 首页 > 知识库问答 >
问题:

在总共为0个请求提供服务后,超过了256 MB的软内存限制,达到269 MB。考虑在App中设置更大的实例类。亚马尔

陆海阳
2023-03-14

我正在应用程序引擎标准环境中部署SpringBoot的基本框架,运行时为java11。

我的应用程序。yaml有以下条目

runtime: java11
instance_class: F4
automatic_scaling:
  target_cpu_utilization: 0.65
  min_instances: 0
  max_instances: 100
  min_pending_latency: 30ms
  max_pending_latency: automatic
  max_concurrent_requests: 50
env_variables:
 GAE_ENV: "standard"
entrypoint: java -noverify -jar myserver-0.0.1-SNAPSHOT.jar

当我部署应用程序使用app.yaml或jar文件,应用程序得到部署,但我得到以下错误。

在总共服务0个请求后,超过了256 MB的软内存限制,269 MB。考虑在app.yaml.中设置一个更大的实例类

我将我的实例从F1升级到F4,但得到了相同的错误。我的应用程序中没有太多代码或工作,它只是一个plane spring启动应用程序,包含所有库,如cloud SQL、spring security。但从功能的角度来看,应用程序中并没有任何东西。

我也附加其他信息我在谷歌云日志

此请求导致为应用程序启动一个新进程,从而导致首次加载应用程序代码。因此,与应用程序的典型请求相比,此请求可能需要更长的时间并使用更多的CPU。

在处理此请求时,发现处理此请求的进程使用太多内存并终止。这可能会导致一个新进程被用于对应用程序的下一个请求。如果经常看到此消息,则应用程序中可能存在内存泄漏,或者使用的实例内存不足。考虑在app.yaml.中设置一个更大的实例类

这是我的pom。xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.1</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.sandeepapplabs</groupId>
    <artifactId>mysalesbuddyserver</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>My Sales Buddy</name>
    <description>My Sales Buddy server project</description>

    <properties>
        <java.version>11</java.version>
        <spring-boot-admin.version>2.3.1</spring-boot-admin.version>
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.source>11</maven.compiler.source>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <!-- Exclude the Tomcat dependency -->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> 
            </dependency> -->

        <!-- <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> 
            <scope>test</scope> </dependency> -->
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <!-- Import dependency management from Spring Boot -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.4.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-gcp-dependencies</artifactId>
                <version>1.2.3.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2020.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>

                    </excludes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>appengine-maven-plugin</artifactId>
                <version>2.4.0</version>
                <configuration>
                    <projectId>mysalesbuddy3</projectId>
                    <version>1</version>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

有人能告诉我如何解决这个问题吗?

共有1个答案

景鹏云
2023-03-14

即使您的应用程序没有消耗很多资源,也可能是VM加上运行的所有服务正在消耗这些资源。

日志中提到的解决方案是切换到更大的实例。

如果您已经部署了一个具有更大实例的新版本,我建议您验证这是调度所有流量的版本,您可以通过进入AppEngine来实现这一点-

 类似资料:
  • 我的服务类中出现空指针异常。我有一个名为IAmazonUtilService的自动连线myservice类。但它面临着null pointervexception。 另外,我写了属性Util从application.properties读取数据,这也是不工作的。请帮帮我。 重要的Amazon数据ervice.java Git链接:https://github.com/Ezhilarasu1330/

  • 我很好奇如何处理GAE中的内存限制。目前,我有这个应用程序,需要大量的CPU/内存。 我尝试在GAE上使用b8实例运行它(基本上是使用4.8GHz CPU的顶级实例) 我还尝试手动设置CPU的数量 但无论我做什么,我总是达到同样的记忆限制。。。(见下文) GET500 0 B 43 s Unknown/_ah/start在总共处理0个请求后,超过了2048 MB的软内存限制,达到3163 MB。考

  • 我正在试图了解K8S吊舱内存分配的行为,但到目前为止,我在互联网上读到的材料没有什么好运气。 我的问题是,如果我有一个用以下值定义的内存POD模板 假设我的应用程序突然需要更多内存,POD分配了4Gi(从2Gi初始内存)来完成任务。POD是否会将其获取的额外2Gi返还给底层操作系统,并在任务完成后再次成为2Gi POD,或者在任务完成后将作为具有4Gi内存的POD使用。 我的应用程序是一个在Apa

  • 我们有一个可怕的经验与gae围棋。当我们的应用程序是一个免费的,我们从来没有超过软私有内存限制的问题。我们抢了定额,因此决定付款。我们每天的预算定为3美元。付费服务激活后,我们可以再次使用该网站,超额配额消失了。几个小时后,我们得到了这个超软私有内存限制,除了这个,再也看不到任何东西了。我试图清除数据存储中的一些大数据,禁用内置插件,但仍然没有运气。 我在代码中做了一些测试,以确定故障来自何处。删

  • 我使用弹性Beanstalk在AWS服务器上部署了我的dockerized微服务,它是使用Akka-HTTP(https://github.com/theiterators/akka-http-microservice)和Scala编写的。 我已经为每个docker和性能问题分配了512MB的内存大小。我注意到当服务器收到更多的请求(如20%、23%、45%...)时,CPU占用会增加&取决于负载

  • 我的一个GAE任务队列请求超过了软内存限制(下面的日志)。我对软内存限制的理解是,它让请求完成,然后在完成后关闭实例。 然而,从日志来看,当我达到软内存限制时,执行似乎停止了。在内存限制消息之后,我没有看到更多的日志代码,我已经检查了我的状态,看起来请求没有完成。我不确定它是否重要,但此请求正在延迟库TaskQueue中执行。 因此,如果TaskQueue达到软私有内存限制,执行是继续直到请求完成