2012-05-09 2 views
1

오늘 내 앱에서 알아 차린 것 때문에 완전히 혼란 스럽습니다.2 개의 동시 요청이 Node.js 앱에 섞여 있습니다.

nginx에서 실행되는 node.js로 작성된 앱이 백엔드의 mongodb와 함께 있습니다. 나는 사용자 이름과 암호를 취하는 'authenticateUser'cal을 가지고있다. 그런 다음 mongodb를 쿼리하여 사용자 문서를 검색하고 암호가 일치하는지 확인합니다.

기본적으로 'authenticateUser'를 루프에서 100 번 호출하는 스크립트를 작성했습니다. 괜찮 았어. 오류 없음. 이제 우리는 2 개의 터미널에서 동일한 스크립트를 실행했습니다. 하나는 사용자 청구서이고 다른 하나는 사용자 sam입니다. 우리는 양쪽 단말기에서 오류를보기 시작했습니다. 나는 약 10 %의 요청이 잘못된 암호 오류로 실패했다고 말합니다.

로그 파일을 검사했을 때 청구서의 사용자 이름이 샘의 암호와 섞여서 놀랐다. 무슨 일이 벌어지고 있는지 전혀 몰라? 우리는 분명히 잘못된 것을하고 있어야합니다. 이게 뭐야? 2 개의 요청이 서로 완전히 격리되어 있지 않습니까?

도움을 주시면 감사하겠습니다.

감사합니다. SU

+0

코드를 넣을 수 있습니까? – sarnold

+0

코드베이스가 큽니다. 오늘 여기 관련 섹션을 복사하여 붙여 넣으려고합니다. –

+0

20 줄짜리 스크립트로 재현 할 수 있으십니까? – sarnold

답변

5

글로벌 변수를 자주 사용합니까? 누락 된 var은 이러한 오류의 일반적인 원인입니다.

그리고 예, 소스 코드를보고 싶습니다 ...

+0

'var'을 사용하여 변수를 선언하지 않으면 자동으로 전역 변수가됩니다. –

+0

(예 : javascript) – alex

+0

그게 전부였습니다! 모든 선언에서 var를 추가하면 문제가 해결됩니다. 많은 감사합니다! –

관련 문제