【问题标题】:Two concurrent requests getting mixed up in Node.js app在 Node.js 应用程序中混淆了两个并发请求
【发布时间】:2012-05-17 13:27:42
【问题描述】:

我完全被我今天在我的应用程序中看到的内容所难倒。

我有一个用 Node.js 编写的应用程序,在 nginx 上运行,后端有 MongoDB。我有一个'authenticateUser' cal,它接受用户名和密码。然后它查询 MongoDB 以检索用户文档并检查密码是否匹配。

我们编写了一个脚本,它基本上在循环中调用 'authenticateUser' 100 次。它工作得很好。没有错误。现在我们从 2 个终端运行相同的脚本,一个用于用户 bill,另一个用于用户 sam。我们开始在两个终端上看到故障。我会说大约 10% 的请求因密码无效错误而失败。

当我们检查日志文件时,我们非常惊讶地发现 bill 的用户名与 sam 的密码混淆了。我们不知道发生了什么。我们一定是在做一些明显错误的事情。它是什么?这两个请求不是完全隔离的吗?

【问题讨论】:

  • 代码库很大。我今天将尝试将相关部分复制并粘贴到此处。
  • 你有没有机会用一个 20 行的脚本来重现它?

标签: node.js mongodb nginx


【解决方案1】:

你经常使用全局变量吗?缺少var 是此类错误的常见原因。

是的,我想看看源代码...

【讨论】:

  • 你是说如果我不使用'var'声明一个变量,它会自动成为一个全局变量?
  • 就是这样!在所有声明中添加 var 解决了这个问题。非常感谢!
猜你喜欢
  • 2015-01-11
  • 2016-04-02
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 2011-11-09
  • 1970-01-01
相关资源
最近更新 更多