Thinkphp5 用ab壓力測試工具測試高併發請求

上篇文章【Thinkphp5實現悲觀鎖】已介紹過thinkphp5使用悲觀鎖實現高併發的場景,這篇文章將實際測試下。php

在shell裏進入到apache的bin目錄,輸入如下url:html

ab -n 100 -c 100 http://www.xyh.com/index/index/mysql_unlock  【不加鎖的狀況,模擬100次請求,每次100個用戶】mysql

備註:若是提示socket: Too many open files (24),請執行ulimit -a,而後ulimit -n 1024。下圖是我已經修改後的。sql

 

因爲在本機測試,若是併發太大,機器報錯,須要從新編譯apache。我這裏只是爲了測試thinkphp加鎖是否能知足業務需求,因此併發設爲100個,用來測試便可。數據庫的商品表,我把庫存設爲50個。正常狀況應該是:goods商品表中庫存total值爲0,銷量sell爲50,orders訂單表有50條記錄。通過測試,發現不加鎖的狀況以下圖:thinkphp

庫存tatol爲3個,銷量sell爲47,orders訂單表有49條記錄。很明顯這不符合實際的業務需求!(這仍是100次併發的狀況,若是幾十萬的併發,錯誤更加離譜。會直接給公司帶來巨大的損失)shell

下面再看看加鎖後的測試狀況:數據庫

庫存tatol爲0個,銷量sell爲50,orders訂單表有50條記錄。符合預期,知足業務需求!apache

相關文章
相關標籤/搜索