秒殺場景的特點:
定時開始、庫存有限、操作可靠
一、開發人員需要注意的事項
現有的秒殺活動持續時間短,瞬間數量大,為了不影響其他業務的正常執行,需要把它從業務、技術、資料上做隔離,架構設計需要分幾層來考慮,從客戶請求到資料庫儲存,到最後上線前的壓力測試。
1、資料庫設計(資料量特別大的情況下可使用:分表、分庫、加索引等)
2、redis+session管理
3、引數校驗+全域性異常處理
4、前端靜態資源壓縮整合
5、使用cdn
6、快取
7、讀寫分離
隔離(業務隔離、系統隔離、資料隔離)、動靜分離、分層校驗(大量的資料做成是漏斗式設計)
二、壓力測試方案:
首先確定測試步驟,且同步確定測試要求,如下:
(1)確定測試目標:與效能測試不同的是,壓力測試的目標是什麼時候系統接近崩潰
(2)確定關鍵功能:針對核心功能進行壓力測試,如:下單、庫存扣減
(3)確定負載:不是每個服務都有高負載的,我們的測試其實是要關注那些負載量大的服務,或者是一段時間內系統中某些服務的負載有波動。這些都是測試目標。
(4)選擇環境:建議搭建和生產環境一模一樣的環境進行測試。
(5)確定監測點:實際上就是對關注的引數進行監視,例如 cpu 負載,記憶體使用率,系統吞吐量等等。
(6)產生負載:這裡需要從生產環境去獲取一些真實的資料作為負載資料來源,這部分資料來源根據目標系統的承受要求由指令碼驅動,對系統進行衝擊。建議使用往期秒殺系統的資料,或者實際生產系統的資料進行測試。
(7)執行測試:這裡主要是根據目標系統,關鍵元件,用負載進行測試,返回監視點的資料。模擬不同的網路環境,硬體條件進行有規律的測試。
(8)分析資料:對關鍵服務的壓力測試資料進行分析得知該服務的承受上限在**。對一段時間內有負載波動或者大負載的服務進行資料分析,得出服務改造的方向。
三、效能測試關注點
1、測試的目的:
(1)了解秒殺系統在高併發下,系統是否穩定
(2)了解秒殺系統效能瓶頸,並進行優化
(3)通過業務場景壓力測試實施,為系統調優提供資料參考
2、業務分析:
(1)使用者註冊/登入頁面併發測試
(2)使用者填寫資訊頁面併發測試
(3)使用者提交訂單頁面併發測試
(4)後台資料庫壓力測試
3、測試指標
(1)使用者併發數:15000
<=3秒,效能優異,<=5秒效能良好,>=10秒,效能不好接受
(3)交易吞吐量:後台主機每秒處理事務數
(4)併發交易成功率》=99%
4、測試資源指標
關注伺服器資源使用情況,監控的伺服器包括api伺服器和資料庫伺服器
系統cpu佔用率:<=80%;系統記憶體使用率:<=80%;系統i/o使用率:<=80%
redis高併發之秒殺活動解決方案
我們模擬10w個人一瞬間湧入頁面進行秒殺,能夠秒殺成功的只有10人。我們把先進來的使用者放入redis佇列中,當佇列中的使用者達到10人時,後面的使用者跳轉到秒殺結束頁面。這裡用隨機數來表示不同的使用者。header content type text html charset utf 8 redi...
js實現秒殺活動計時
秒殺活動容器 box food back div div 定義乙個函式來獲取一次時間差 function fun minute parseint time 1000 60 60 if minute 9 hour parseint time 1000 60 60 24 if hour 9 date p...
模擬測試秒殺
1.我的環境是windows下的phpstudy,進入到apache bin目錄裡面有個ab.exe,壓力測試命令如下 ab.exe c 200 n 1000 2.mysql.php 如下 正常的邏輯思維,壓力增大後,導致資料庫num欄位成為負數,將下面 貼上到自己 下測試即可。在test資料庫下,...