经过漫长的开发过程,我开发的一个基于spring的GAE程序快能应用了。但是一发布,访问特别慢(大概30s左右)。这是因为spring首次启动需要很长的时间。而且几分钟不访问的话,gae会自动关闭。下次请求就会重新启动网站。
查了一下资料,如下:
根据官方的资料,采用percompilation之后,大概能有30%左右的速度提升。经过实际测试,确实会有性能的提升,但是启动速度还是不快(在gae压力小的时候大概20s,压力大的时候还需要30s)。 真正还是需要解决spring框架初始化的时间。
If you've been following the App Engine Java runtime group
,
you may have noticed some discussions about performance of the Java
runtime. Many of you have complained about hard-to-predict
DeadlineExceededExceptions, or unexpectedly slow requests that use a
high amount of CPU. These issues often have the same root cause: App
Engine is preparing a new instance of your code to respond an incoming
request. We call this occurrence a "loading request". Since App Engine
provides server resources on demand, there are several reasons why you
might experience a loading request:
- You just uploaded a new version of your application.
- Your application may have gotten no traffic recently.
- Your traffic has become high enough to need another JVM to scale.
You can expect that during the course of developing your application,
you will often experience the first two scenarios. In comparison, for a
production app receiving even a very small but steady amount of
traffic, loading requests are relatively infrequent.
As an application developer, you can influence the length of your
loading requests by controlling the amount of work done initializing
your application and its dependencies. The App Engine team has also
been working diligently on the Java runtime to reduce the time spent in
loading requests.
First, we're introducing a new class-loading optimization in 1.2.8
called precompilation. Precompilation makes loading requests faster by
doing class-loading work ahead of time in the App Engine environment.
We've seen significant improvements with precompilation, but we've left
it opt-in by default for 1.2.8. You can enable it for your application
by adding precompilation-enabled to your appengine-web.xml:
<precompilation-enabled>true</precompilation-enabled>
Second, we've been profiling applications with longer
loading requests. Often they include large dependencies like Groovy and
JRuby. We're working directly with those teams to improve startup by
spotting and reducing unnecessary initialization
.
Finally, we're continuing to work on additional startup improvements we
hope to unleash on the Java runtime in the future, and make it easier
to identify loading requests in application logs. We will continue to
pay close attention to performance issues that both Java and Python
developers see, both through changes to our APIs and to our service.
For more information on how to understand the performance of your Java applications, check out the set of frequently asked questions
we've collected and answered about performance characteristics of the Java runtime. Also check out Max Ross's recent post on the performance of the new != and IN filters
in JDO and JPA.
分享到:
相关推荐
在 Google AppEngine 上运行的简单 Spring Boot 应用程序。 没有尝试使用 Google API - 只是一个可以工作的最小 Spring 应用程序。... main()应用程序(普通的 Spring Boot 启动器)也应该可以工作。
-DarchetypeArtifactId=spring-boot-gae-blank-archetype\ -DarchetypeVersion=1.0.4 使用CommandPrompt(Windows) mvn archetype:generate^ -DarchetypeGroupId=am.ik.archetype^ -DarchetypeArtifactId=...
【标题】"Spring+GAE"揭示了将Google App Engine(GAE)与Spring框架集成的主题,这是一个在云端运行Java应用程序的关键技术组合。Spring是一个广泛使用的开源Java框架,提供了依赖注入、面向切面编程和MVC(模型-...
示例 Spring MVC、Spring Security、...要启动应用程序,请使用此演示中已包含的。 只需运行命令。 mvn appengine:devserver 要查看 App Engine 插件的所有可用目标,请运行 mvn help:describe -Dplugin=appengine
使用 Spring Boot Legacy(对于 Servlet v2.5) 还有一些协调。 RPC 调用记录 RPC Invoked: memcache#Set 参见com.kaiinui.appenginetest.debug.RpcLogDelegate App Engine 服务 Bean @Autowired ...
因此,你需要配置 Django 使用 GAE 的适配器,如 `googlecloudsql` 或 `gae-db`,并调整模型以适应非关系型数据库。 4. **URL路由**:Django 的 URL 路由系统可以正常工作,但在 GAE 上可能需要额外考虑负载均衡和...
基于【压缩包子文件的文件名称列表】"todo-list-test-spring-mvc-gae-master",我们可以推测项目结构: 1. **源代码**:项目可能包含一个名为"src"的目录,分为"main"和"test"两个部分,分别存放主要代码和测试代码...
Spring Security SAML GAE Project 支持在 Google 应用程序引擎中部署 Spring SAML 应用程序。 介绍 默认情况下,Google 应用程序引擎不支持启动新线程和直接使用套接字。 以下类介绍了 GAE 特定 API 的用法,用于...
"jqtree-spring-mvc-gae-example"项目是将jqTree、Spring MVC和Google App Engine结合的一个实例。在这个项目中,开发者可能使用了Spring MVC来处理HTTP请求,通过Controller将请求转发到服务层,服务层可能与Google...
Spring框架是Java开发中的一个核心组件,它为构建可测试、模块化且松耦合的Java应用程序提供了全面的解决方案。本文将深入探讨Spring Framework从2.5版本到5.1版本的主要变化和关键特性。 1. Spring 2.5:里程碑式...
SQLMap是一款著名的开源自动化SQL注入工具,主要用于检测和利用网站应用程序中的SQL注入漏洞。这个压缩包文件"sqlmapproject-sqlmap-1.4.12-46-gae6a812.zip"包含了SQLMap的一个特定版本,即1.4.12-46-gae6a812。...
Flask-Ember-GAE 是一个简单的 Web 应用程序,它是使用 Google App Engine 上的 Flask Python 库作为 Ember.js 应用程序的 RESTful 后端的脚手架。 ##使用: ###安装应用引擎 下载并安装 这将为您提供一个模拟...
标题“spring+gae+hibernate”所提及的是一个技术集成项目,主要涉及Spring框架、Google App Engine(GAE)和Hibernate三个关键组件。让我们详细探讨这三个技术以及它们的集成。 Spring是一个开源的Java企业级应用...
【标题】"IOS应用源码——nevyn-overload-0.3-0-gae3b7f5.zip" 提供的是一份iOS应用的源代码,版本号为0.3,标识符为gae3b7f5。这个压缩包很可能包含了一个完整的iOS项目,开发者可能在其中实现了特定的功能或者用于...
压缩包中的"gae-struts2-spring-tiles-starter"可能是一个启动项目,包含了整合Struts2、Spring和Tiles的示例代码。Tiles是一个视图分辨率框架,它可以组合多个JSP片段来创建复杂页面。通过Struts2和Tiles的结合,...
总之,"Latke-GAE-1.0.10"和"MicroORM"是Android开发中的两个实用工具,它们分别解决了云端服务构建和客户端数据操作的问题,对于提升开发效率和优化应用性能具有显著作用。开源社区的力量使得这样的优秀项目得以...
相反, Java程序编写的数据显示(如问题SQL查询) ,并FreeMarker刚刚生成的文本网页,显示的数据准备使用的范本。 FreeMarker 不是一个Web应用框架。 它适合作为一个组成部分在一个Web应用框架,但FreeMarker...
maven-gae-plugin-0.9.6-sources.jar
maven-gae-plugin-0.9.5-sources.jar
maven-gae-plugin-0.9.4-sources.jar