我完全被我今天在我的应用程序中注意到的内容难住了。
我有一个用 Node.js 编写的应用程序,在 nginx 上运行,后端有 MongoDB。我有一个'authenticateUser' cal,它接受用户名和密码。然后它查询 MongoDB 以检索用户文档并检查密码是否匹配。
我们编写了一个脚本,它基本上循环调用 'authenticateUser' 100 次。它工作得很好。没有错误。现在我们从 2 个终端运行相同的脚本,一个用于用户 bill,另一个用于用户 sam。我们开始在两个终端上看到故障。我想说大约 10% 的请求因密码无效错误而失败。
当我们检查日志文件时,我们完全惊讶地发现 bill 的用户名与 sam 的密码混淆了。我们不知道发生了什么。我们一定是在做一些明显错误的事情。它是什么?这两个请求不是完全相互隔离的吗?