常用的網(wǎng)站性能測(cè)試指標(biāo)有:并發(fā)數(shù)、響應(yīng)時(shí)間、吞吐量、性能計(jì)數(shù)器等。
1、并發(fā)數(shù)
并發(fā)數(shù)是指系統(tǒng)同時(shí)能處理的請(qǐng)求數(shù)量,這個(gè)也是反應(yīng)了系統(tǒng)的負(fù)載能力。
2、響應(yīng)時(shí)間
響應(yīng)時(shí)間是一個(gè)系統(tǒng)最重要的指標(biāo)之一,它的數(shù)值大小直接反應(yīng)了系統(tǒng)的快慢。響應(yīng)時(shí)間是指執(zhí)行一個(gè)請(qǐng)求從開(kāi)始到最后收到響應(yīng)數(shù)據(jù)所花費(fèi)的總體時(shí)間。
3、吞吐量
吞吐量是指單位時(shí)間內(nèi)系統(tǒng)能處理的請(qǐng)求數(shù)量,體現(xiàn)系統(tǒng)處理請(qǐng)求的能力,這是目前最常用的性能測(cè)試指標(biāo)。
QPS(每秒查詢數(shù))、TPS(每秒事務(wù)數(shù))是吞吐量的常用量化指標(biāo),另外還有HPS(每秒HTTP請(qǐng)求數(shù))。
跟吞吐量有關(guān)的幾個(gè)重要是:并發(fā)數(shù)、響應(yīng)時(shí)間。
QPS(TPS),并發(fā)數(shù)、響應(yīng)時(shí)間它們?nèi)咧g的關(guān)系是:
QPS(TPS)= 并發(fā)數(shù)/平均響應(yīng)時(shí)間
4、性能計(jì)數(shù)器
性能計(jì)數(shù)器是描述服務(wù)器或操作系統(tǒng)性能的一些數(shù)據(jù)指標(biāo),如使用內(nèi)存數(shù)、進(jìn)程時(shí)間,在性能測(cè)試中發(fā)揮著"監(jiān)控和分析"的作用,尤其是在分析統(tǒng)統(tǒng)可擴(kuò)展性、進(jìn)行新能瓶頸定位時(shí)有著非常關(guān)鍵的作用。
Linux中可以使用top或者uptime命令看到當(dāng)前系統(tǒng)的負(fù)載及資源利用率情況。
資源利用率:指系統(tǒng)各種資源的使用情況,如cpu占用率為68%,內(nèi)存占用率為55%,一般使用"資源實(shí)際使用/總的資源可用量"形成資源利用率。
壓測(cè)腳本(下單的接口):
#!/usr/bin/env python #-*- coding:utf-8 -*- import requests,time,json,threading,random class Presstest(object): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36', 'Content-Type': 'application/json; charset=UTF-8', } def __init__(self,login_url,press_url,phone="1376193000",password="123456"): self.login_url = login_url self.press_url = press_url self.phone = phone self.password = password self.session = requests.Session() self.session.headers = self.headers def login(self): '''登陸獲取session''' data = data = {'t': int(time.time() * 1000), 'userName': self.phone, 'passWord': self.password} res = self.session.post(self.login_url,data=json.dumps(data)) XToken = res.json().get('data').get('companyToken') self.session.headers['X-Token'] = XToken def testinterface(self): '''壓測(cè)接口''' self.session.headers['X-UnionId'] = 'of6uw1CUVhP533sQok' data = {"id": int(''.join(str(random.choice(range(10))) for _ in range(10))), "openId": "oMr0c5LGJjlTc", "addressId": 10, "shipType": "SELF", "totalAmount": 5, "receivable": 5, "carts": [ {"amount": 1, "barcode": "1234567890", "skuId": 1, "spec": "34", "itemAmount": 5, "price": 0, "cover": "xxxx-dd.oss-cn-shanghai.aliyuncs.com/dfc91fd067ac464c096c90af33a196a5.png", "name": "沙宣洗發(fā)水", "packingType": "瓶", "placeOfOrigin": "上海", "productId": "310153323435134976", "retailPrice": 5, "suitableAge": "1-100"}], "formId": "the formId is a mock one", "comments": "aa"} global ERROR_NUM try: html = self.session.post(self.press_url, data=json.dumps(data)) if html.json().get('code') != 0: print(html.json()) ERROR_NUM += 1 except Exception as e: print(e) ERROR_NUM += 1 def testonework(self): '''一次并發(fā)處理單個(gè)任務(wù)''' i = 0 while i < ONE_WORKER_NUM: i += 1 self.work() time.sleep(LOOP_SLEEP) def run(self): '''使用多線程進(jìn)程并發(fā)測(cè)試''' t1 = time.time() Threads = [] for i in range(THREAD_NUM): t = threading.Thread(target=self.testonework, name="T" + str(i)) t.setDaemon(True) Threads.append(t) for t in Threads: t.start() for t in Threads: t.join() t2 = time.time() print("===============壓測(cè)結(jié)果===================") print("URL:", self.press_url) print("任務(wù)數(shù)量:", THREAD_NUM, "*", ONE_WORKER_NUM, "=", THREAD_NUM * ONE_WORKER_NUM) print("總耗時(shí)(秒):", t2 - t1) print("每次請(qǐng)求耗時(shí)(秒):", (t2 - t1) / (THREAD_NUM * ONE_WORKER_NUM)) print("每秒承載請(qǐng)求數(shù):", 1 / ((t2 - t1) / (THREAD_NUM * ONE_WORKER_NUM))) print("錯(cuò)誤數(shù)量:", ERROR_NUM) if __name__ == '__main__': login_url = 'https://ds.xxxxx.com/sys/sysUser/login' press_url = 'https://ds.xxxxx.com/weshop/order/checkout' phone = "1376193000" password = "123456" THREAD_NUM = 1 # 并發(fā)線程總數(shù) ONE_WORKER_NUM = 5 # 每個(gè)線程的循環(huán)次數(shù) LOOP_SLEEP = 0.1 # 每次請(qǐng)求時(shí)間間隔(秒) ERROR_NUM = 0 # 出錯(cuò)數(shù) obj = Presstest(login_url=login_url,press_url=press_url,phone=phone,password=password) obj.login() obj.run()
輸出結(jié)果:
===============壓測(cè)結(jié)果=================== URL: https://ds.xxxxx.com/weshop/order/checkout 任務(wù)數(shù)量: 1 * 5 = 5 總耗時(shí)(秒): 1.9810078144073486 每次請(qǐng)求耗時(shí)(秒): 0.39620156288146974 每秒承載請(qǐng)求數(shù): 2.5239678327547805 錯(cuò)誤數(shù)量: 0
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
