Người A có 10000 $ trong tài khoản, anh ta thực hiện rút 5 lần cùng lúc từ internet banking (bỏ qua 1 số token bảo vệ nhé), mỗi lần 10$, nhưng trong tài khoản chỉ trừ 10$ thôi (lẽ ra phải trừ 50). Vậy lỗi xảy ra ở đâu ?
Xem xét đoạn code sau của ngân hàng trong việc trừ tiền :

Khi tiến trình 1 đang thực hiện câu lệnh $tongtien = $tongtien – $sotien thì một tiến trình 2 của người A đang đòi rút chèn ngang, lúc này hệ thống sẽ tạm dừng tiến trình 1 đang xử lý để quay sang xử lý tiến trình 2 :

Lúc này khi bắt đầu xử lý tiến trình 2, tổng tiền chưa được cập nhật bởi tiến trình 1 đã tạm dừng. Do đó số tiền trong tk lúc này vẫn là 10000 và sau khi thực hiện xong cả 2 tiến trình thì tổng tiền vẫn là 9990 mặc dù đã rút 2 lần. Như vậy race condition đã xảy ra khi mà 1 tiến trình chèn ngang tiến trình khác trong lúc các tham số vẫn chưa kịp cập nhật.
Ở đây mình tạo 1 đoạn code lấy tiền với khá nhiều việc, làm cho thời gian xử lý nó lên tới tận 1,2s và cố thử rút 8 lần mà chỉ bị trừ 10$
B1, kiểm tra tài khoản ban đầu và xem access log , lúc này ta đang có 10000:

B2, Xử dụng 1 đoạn python để cùng 1 lúc gửi 8 request, mỗi request đều rút 10$ trong cùng 1 thời gian và xem kết quả trả về :
Như vậy sau 10 request, tổng tiền chỉ bị trừ 10$ trong khi đã rút đến 8 lần.B3. Kiểm tra log file ta thấy 8 request này tới cùng lúc. Và bởi vì server phải đòi hỏi đến 1 giây để xử lý 1 giao dịch, do đó 8 request này đã làm xuất hiện race condition và bị chèn ngang lẫn nhau.

Nguồn Blog
http://antoanthongtin.wordpress.com
![[Hình: link-an-toan1.jpg]](http://www1.picturepush.com/photo/a/11858279/640/Picture-Box/link-an-toan1.jpg)
![[Hình: link-an-toan2.jpg]](http://www2.picturepush.com/photo/a/11858280/640/Picture-Box/link-an-toan2.jpg)
![[Hình: link-an-toan3.jpg]](http://www3.picturepush.com/photo/a/11858281/640/Picture-Box/link-an-toan3.jpg)
![[Hình: Su-dung-1.jpg]](http://www4.picturepush.com/photo/a/11850617/640/Picture-Box/Su-dung-1.jpg)
![[Hình: Su-dung-2.jpg]](http://www5.picturepush.com/photo/a/11850618/640/Picture-Box/Su-dung-2.jpg)
![[Hình: Su-dung-3.jpg]](http://www1.picturepush.com/photo/a/11850619/640/Picture-Box/Su-dung-3.jpg)
![[Hình: Su-dung-4.jpg]](http://www2.picturepush.com/photo/a/11850620/640/Picture-Box/Su-dung-4.jpg)
![[Hình: Su-dung-5.jpg]](http://www4.picturepush.com/photo/a/11850622/640/Picture-Box/Su-dung-5.jpg)
![[Hình: Su-dung-6.jpg]](http://www3.picturepush.com/photo/a/11850616/640/Picture-Box/Su-dung-6.jpg)
![[Hình: http500error.jpg]](http://www1.picturepush.com/photo/a/11850719/640/Picture-Box/http500error.jpg)
![[Hình: httperror403forbidden.jpg]](http://www5.picturepush.com/photo/a/11850723/640/Picture-Box/httperror403forbidden.jpg)
![[Hình: httperror503.jpg]](http://www3.picturepush.com/photo/a/11850716/640/Picture-Box/httperror503.jpg)
![[Hình: httperror400.jpg]](http://www3.picturepush.com/photo/a/11850721/640/Picture-Box/httperror400.jpg)
![[Hình: httperror404.jpg]](http://www1.picturepush.com/photo/a/11850724/640/Picture-Box/httperror404.jpg)
![[Hình: httperror504.jpg]](http://www4.picturepush.com/photo/a/11850717/640/Picture-Box/httperror504.jpg)
![[Hình: httperror401.jpg]](http://www4.picturepush.com/photo/a/11850722/640/Picture-Box/httperror401.jpg)
![[Hình: httperror302.jpg]](http://www2.picturepush.com/photo/a/11850720/640/Picture-Box/httperror302.jpg)
![[Hình: httperrorcode200.jpg]](http://www5.picturepush.com/photo/a/11850718/640/Picture-Box/httperrorcode200.jpg)











