我必須通過每天100k Post-Requests列表來壓力測試服務器。每個請求必須以給定的固定時間戳開始。兩個請求之間最小的時間差約爲100ms。Stresstest服務器:在給定的亞秒時間戳上啓動請求
例子:
12:08:38.971 url1
12:08:39.429 url2
12:08:40.186 url3
12:08:40.444 url4
...
我會用perl或c實現stresstest。請求使用curl執行,使用線程,因爲響應通常長於100ms。
我的問題是填寫某種類型的隊列,在列表中給定的固定時間開始請求。
我的第一個想法是使用while循環(例如,對於單個請求)和永久檢查時間戳:
#include <stdio.h>
#include <sys/time.h>
struct timeval time;
int t_sec=1496064929;
int t_usec=100;
int request_started=0;
int main(){
while(1){
gettimeofday(&time, NULL);
if(time.tv_sec == t_sec && time.tv_usec > t_usec && request_started == 0){
printf("Request start at %d %d\n", time.tv_sec, time.tv_usec);
request_started=1;
}
}
}
但這種代碼是很不理想...... 是否有某種調度庫哪些可以處理亞秒範圍內的請求?或者,也許,已經準備好使用基準工具,它可以從給定的列表中產生這樣的請求(我已經檢查過Apache基準,httperf和圍困沒有運氣)?
在此先感謝!
僅在嚴格給定的時間戳發送請求是強制性的,還是基本上要強調服務器有100k個請求,在兩個連續請求之間保持足夠的時間以確保兩個請求不會以相同的套接字結束 – Pras
不幸的是,在Stack Overflow上是無關緊要的。然而,你也許可以寫一些使用crond或類似的東西。你可以編寫一個程序將你的文件轉換成一個crontab(儘管我不確定crontab是否允許microtimes,也許有一些插件)。 – simbabque
是的,必須在給定的時間戳發送請求。我們的客戶提供時間戳和請求後的列表。該列表旨在重現當天的請求數量。很多工作時間的要求 - 只有在晚上的一些要求。 – MPH