測試環境流量回放

 

 

    最近新申請了一些數據庫資源,代碼也已經改動完畢,測了幾個數據,感受改動沒有什麼問題。不過,切換數據源若是隻是簡單測幾條數據,貌似很不嚴謹的樣子python

,畢竟線上的流量比較大,說不許就被壓垮了呢。因此,仍是有必要作一下壓力測試。拿線上的流量來作測試是最好的了,一方面能夠看改動後的程序和數據庫可否支撐目前的請求,另外一方面,也能夠和當前的性能進行比較。由於時間倉促,沒有去調研現有的工具,而是本身寫了一個。個人思路是這樣的:線上的請求過來都會打日誌(完整的日誌),一個腳本一直在掃描這個日誌,當出現了請求以後,就發往改動好的程序代碼,這樣就能夠模擬兩套數據源和代碼在同一時刻的響應時間了(可能中間仍是會差個幾秒,可是能夠忽略不計了)。redis

#coding:utf-8
#!/usr/bin/python
import json
import redis

import subprocess

def getData():
    popen = subprocess.Popen('tail -n 1 -f restlog.log',stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
    while True:
        line = popen.stdout.readline()
        if "request" not in line:  #若是不是請求,直接跳出
            continue
        data = line.split("request body:")
        #下面一段封裝具體的請求,由於涉及到公司的一些代碼,暫且省略了

 代碼運行了三四個小時,作了充分的數據對比,還不錯。shell

相關文章
相關標籤/搜索