问题:
我的网络应用程序运行在上。目前有2个VM实例运行该App网站。
奇怪的是,当一个特定的事件被调用(大约10次)时,似乎有两个特定全局变量的不同实例。
我这么说是因为有时全局数组的长度是0,有时是1,而实际上它并没有改变。
是什么原因造成的?
代码:
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);
    //
});发布于 2018-01-23 15:06:44
这是什么原因?
内存中的变量accountsArray。任何重新启动您的进程或vm,都会重置变量。考虑使用一个具有弹性的存储,比如redis或memcache。
编辑
应该提到的是,另一个原因是因为每个VM中的变量都存在于内存中,因此没有通用的存储,所以会有奇怪的结果。同样,这个问题通过使用两个VM都可以使用的公共会话存储来解决。
https://stackoverflow.com/questions/48404562
复制相似问题