The*_*chu 10 google-app-engine instance reset go data-loss
我现在第二次遇到这个问题了,我想知道是否有任何解决方案.我正在Google App Engine上运行一个依赖于通过HTTP JSON RPC与网站进行频繁通信的应用程序.似乎GAE倾向于在日志中随机显示这样的消息:
"此请求导致您的应用程序启动了一个新进程,从而导致您的应用程序代码首次加载.因此,此请求可能需要更长的时间并且使用的CPU比典型的应用程序请求更多."
并重置存储在RAM中的所有变量而不发出警告 无论我再次设置变量多少次或将更新的代码上传到GAE,相同的过程都会反复发生,尽管增加应用版本号似乎可以解决问题.
如何获取有关此行为的更多信息,如何避免这种行为并防止我的Golang应用程序在Google App Engine上丢失?
编辑:
存储在RAM中的变量是字符串,字节,bool和指针的小类.没有太复杂或太大.
谷歌应用引擎似乎在重大使用的几秒钟内"开始一个新的过程",这应该不足以让应用程序因未被使用而关闭.应用程序上传到GAE,其变量集和创建的新进程之间的时间跨度不到一分钟.
Pet*_*ego 15
您是否意识到GAE是一种云托管解决方案,可根据负载自动管理实例?这是人们使用它的主要特征和原因.
当负载增加时,GAE会创建一个新实例,当然,所有RAM变量都是空的.
解决方案不是期望变量可用或在请求结束时将它们存储到永久存储(会话,内存缓存,数据存储),如果在请求的开始时不存在则加载它们.
您可以在其文档中阅读有关GAE实例的信息,请查看性能部分:
http://code.google.com/appengine/kb/java.html
如果您有少量可用数据,如果它是静态的,则可以在启动新实例时将其加载到内存中。如果是动态数据,则应使用其api将其保存到数据库中。
我关于保持GAE实例存活的建议,要么为Always-On服务付费,要么按照我的建议在此处使用cron:
http://rwyland.blogspot.com/2012/02/keeping-google-app-engine-gae-instances.html
我使用所谓的3、7、11分钟的Cron工作的“主要时间表”。
| 归档时间: |
|
| 查看次数: |
8942 次 |
| 最近记录: |