Java App引擎响应时间慢和优化
我有一个关于GoogleAppEngine的项目,有几个函数使用 驱动javaapi 另外,我使用的是“com.google.appengine.api.users.User;” 当我使用某些函数时,例如:createDocument:Java App引擎响应时间慢和优化,java,google-app-engine,google-drive-api,Java,Google App Engine,Google Drive Api,我有一个关于GoogleAppEngine的项目,有几个函数使用 驱动javaapi 另外,我使用的是“com.google.appengine.api.users.User;” 当我使用某些函数时,例如:createDocument: public FileResponse createDocument(FileRequest file, @Named("visibility") @Nullable String visibility, User user) throws IOExceptio
public FileResponse createDocument(FileRequest file, @Named("visibility") @Nullable String visibility, User user) throws IOException, OAuthRequestException,
BadRequestException
{
Utils.validateAuthenticatedUser(user);
file.setValidator(new FileRequestValidator(FileRequestValidator.FileRequestType.CREATE));
file.validate(file);
Drive drive = new Drive.Builder(Globals.httpTransport, Globals.jsonFactory, Authenticator.credential(Constants.DRIVE_SCOPE, file.getDomainUser())).setApplicationName(
"My - APP").build();
File newFile = null;
try
{
Drive.Files.Insert insert = drive.files().insert(file.getFile());
if (visibility != null) insert.setVisibility(visibility);
newFile = insert.execute();
return new FileResponse(newFile);
} catch (Exception e)
{
logger.severe("An error occurred: " + e.getMessage());
throw new OAuthRequestException(e.getMessage());
}
}
此功能正在工作,但它需要920毫秒。有没有一种方法可以优化它?甚至向谷歌支付更多
我们可以看到700毫秒的时间属于urlFetch
您可以使用来评测应用程序的远程过程调用(RPC)性能。RPC会使应用程序运行缓慢
要保持应用程序的快速运行,您需要知道:
- 您的应用程序是否正在进行不必要的RPC调用
- 它应该缓存数据而不是重复进行RPC调用以获取相同的数据吗
- 如果并行执行多个请求而不是串行执行多个请求,应用程序的性能会更好吗
- 您的应用程序是否正在进行不必要的RPC调用
- 它应该缓存数据而不是重复进行RPC调用以获取相同的数据吗
- 如果并行执行多个请求而不是串行执行多个请求,应用程序的性能会更好吗
Appstats通过允许您评测RPC调用来验证应用程序是否以最有效的方式使用RPC调用。Appstats允许您跟踪给定请求的所有RPC调用,并报告每次调用的时间和成本。是否必须在用户收到响应之前完成文档的创建?通常,我会延迟资产的创建,首先给交互用户http响应,然后在任务中创建文档。是的,我们的用户正在等待文档准备就绪,然后在收到响应后,他可以进入文件。对用户的响应是否取决于所创建文档的内容?您仍然可以在异步任务中创建文档,并为调用者提供一个句柄,允许他们访问新文档,前提是创建在他们尝试访问它之前完成。如果请求在创建完成之前到达,请求者可以在该点延迟,而不是在初始调用期间。是否必须在用户收到响应之前完成文档的创建?通常,我会延迟资产的创建,首先给交互用户http响应,然后在任务中创建文档。是的,我们的用户正在等待文档准备就绪,然后在收到响应后,他可以进入文件。对用户的响应是否取决于所创建文档的内容?您仍然可以在异步任务中创建文档,并为调用者提供一个句柄,允许他们访问新文档,前提是创建在他们尝试访问它之前完成。如果请求在创建完成之前到达,请求者可以在该点延迟,而不是在初始调用期间。