问题:
我的网络应用程序正在Google Cloud App Engine上运行。目前,该App Engine网站正在运行2个VM实例。
奇怪的是,当调用特定事件(大约每分钟10次)时,似乎有2个不同的特定全局变量实例。
我这样说是因为我的全局数组的长度有时为0,有时它实际上没有变化时为1。
可能导致这种情况的原因是什么?
CODE:
app.js
global.accountsArray = [];
file1.js
global.accountsArray.push(account);
file2.js
eventEmitter.on('event', function (body) {
console.log("EMITTER");
//sometimes prints out 1, sometimes prints out 0
console.log("Array length: "+global.accountsArray.length);
//
console.log("DESTINATION: "+body.block.destination);
//sometimes empty, sometimes not
console.log("ARRAY :"+global.accountsArray);
//
});
答案 0 :(得分:1)
可能导致此问题的原因是什么?
变量accountsArray
在内存中。任何重启到您的进程或vm,将重置该变量。考虑使用商店来恢复弹性,如redis或memcache。
修改强>:
应该提到,另一个原因是因为变量存在于每个VM的内存中,没有公共存储,所以你会得到奇怪的结果。同样,通过使用VM可以使用的公共会话存储来解决此问题。