托管VM问题?经常在AppEngine托管VM实例

时间:2015-10-09 02:13:28

标签: java google-app-engine google-managed-vm

我从2015年3月开始使用Google AppEngine托管VM / Java。一切都运行良好。但是在2015年10月9月之后,我注意到我经常在托管虚拟机实例日志中看到“com.google.apphosting.vmruntime.VmApiProxyDelegate”的错误日志。

我发现了2组错误日志。

第一个与托管VM实例上的数据存储区操作有关。它发生在

  • datastore_v3.Get()。
  • datastore_v3.RunQuery()
  • datastore_v3.Put()
  • memcache.Get()。

我在日志中看到的堆栈跟踪示例如下......(下面的示例是针对datastore_v3.Put())

  

com.google.apphosting.vmruntime.VmApiProxyDelegate runSyncCall:HTTP   datastore_v3.Put的ApiProxy I / O错误:读取超时

     

com.google.apphosting.api.ApiProxy $ RPCFailedException:远程RPC   调用datastore_v3.Get()时,应用程序服务器失败。在   com.google.apphosting.vmruntime.VmApiProxyDelegate.runSyncCall(VmApiProxyDelegate.java:182)     在   com.google.apphosting.vmruntime.VmApiProxyDelegate.makeApiCall(VmApiProxyDelegate.java:141)     在   com.google.apphosting.vmruntime.VmApiProxyDelegate.access $ 000(VmApiProxyDelegate.java:47)     在   com.google.apphosting.vmruntime.VmApiProxyDelegate $ MakeSyncCall.call(VmApiProxyDelegate.java:375)     在   com.google.apphosting.vmruntime.VmApiProxyDelegate $ MakeSyncCall.call(VmApiProxyDelegate.java:351)     在java.util.concurrent.FutureTask.run(FutureTask.java:262)at   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)     在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615)     在java.lang.Thread.run(Thread.java:745)

因此,当发生此错误时,在应用程序级别(我的代码),我得到RPCFailedException但是现在,我没有使用重试机制来处理它(我只使用与App Engine数据存储区API的ConcurrentModificationException的重试机制)

第二组错误日志是关于托管VM上的TaskQueue API。

我收到的错误信息是......

  

com.google.apphosting.vmruntime.VmApiProxyDelegate runSyncCall:错误   body:RPC错误:/StubbyService.Send到(未知):APP_ERROR(2)

跟踪时,详细的堆栈跟踪是......

  

com.wat_suttiwat.batchengine.job.PushNotificationTaskExecutor   executeTask:应用程序服务器的远程RPC失败   调用taskqueue.QueryAndOwnTasks()。   com.google.apphosting.api.ApiProxy $ RPCFailedException:远程RPC   到应用程序服务器失败的呼叫   taskqueue.QueryAndOwnTasks()。在   com.google.apphosting.vmruntime.VmApiProxyDelegate.runSyncCall(VmApiProxyDelegate.java:161)     在   com.google.apphosting.vmruntime.VmApiProxyDelegate.makeApiCall(VmApiProxyDelegate.java:141)     在   com.google.apphosting.vmruntime.VmApiProxyDelegate.access $ 000(VmApiProxyDelegate.java:47)     在   com.google.apphosting.vmruntime.VmApiProxyDelegate $ MakeSyncCall.call(VmApiProxyDelegate.java:375)     在   com.google.apphosting.vmruntime.VmApiProxyDelegate $ MakeSyncCall.call(VmApiProxyDelegate.java:351)     在java.util.concurrent.FutureTask.run(FutureTask.java:262)at   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)     在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615)     在java.lang.Thread.run(Thread.java:745)

在应用程序级别引发的“RPCFailedException”异常(与第一种情况一样)。我注意到了谷歌AppEngine前端实例(不是托管-vm实例),它照常工作没有错误。

所以我的问题是

  1. 我应该为RPCFailedException添加重试机制吗?添加重试是否有用?我没有看到Google AppEngine文档中的任何文档。

  2. 有没有人和我有同样的问题?如果是,请帮助在此问题跟踪器上投票(#12393):https://code.google.com/p/googleappengine/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner%20Log&groupby=&sort=&id=12393

  3. 如果您有任何解决方法,请分享。

  4. 非常感谢

0 个答案:

没有答案