最近在做乙個功能模組,目前功能上已經實現,但是效能暫時沒有做過測試。
我的功能主要是接收udp訊息,並將udp訊息進行封裝處理,傳送到後端處理模組進行處理。
簡單寫乙個小的udp客戶端程式,去模擬壓力測試。
#include
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char **argv)
struct sockaddr_in server_addr;
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = af_inet;
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
server_addr.sin_port = htons(4020);
int fd = socket(af_inet, sock_dgram, 0);
if (fd < 0)
struct timeval start;
gettimeofday(&start, null);
unsigned
long ustart = start.tv_sec*1000000 + start.tv_usec;
usleep(1);
struct timeval now;
memset(&now, 0, sizeof(struct timeval));
unsigned
long unow = 0;
int totaludp = atoi(argv[1]);
int maxrate = atoi(argv[2]); // caps
printf("totaludp: %d\n", totaludp);
printf("maxrate: %d\n", maxrate);
int sum = 0;
double rate = 0.0;
char buff[1024*16] = "";
while (sum < totaludp)
sprintf(buff, "%d %d %d\0", now.tv_sec, now.tv_usec, sum);
int res = sendto(fd, buff, strlen(buff), 0, (struct sockaddr*)&server_addr, sizeof(server_addr));
if (res < 0)
// printf("send %d bytes ok\n", res);
sum ++;
}close(fd);
printf("finish %d in %.3f, rate: %.f\n", sum, (unow-ustart+0.0)/1000000, rate*1000000);
exit(0);
}
編碼 && 執行:
[udpdriver@eb6347 test]$ gcc -o main main.c
[udpdriver@eb6347 test]$ ./main
usage
: ./main $sum
$rate
[udpdriver@eb6347 test]$ ./main 10000
1000
totaludp:
10000
maxrate:
1000
finish 10000
in9.999, rate:
1000
程式原理很簡單:
在未達到指定的傳送訊息數量時,不斷去計算從開始傳送時刻到當前傳送時刻的平均傳送速率,如果當前傳送平均速率小於你指定的最大傳送速率,則可以繼續傳送,否則暫停一小段時間,然後繼續嘗試傳送。
例如:我要測試20k的訊息總量,2kcaps,如何執行?
./main 20000 2000
實際將在約10s後完成壓力測試(傳送)。
我們可以設定不同的模組配置引數(例如修改udp接收緩衝區的大小),以及每條udp訊息的長度,每秒傳送的caps量來做出一組效能測試結果,用以反映我們模組的效能。
程式壓力測試軟體
由於一些原因要進行一些程式 的壓力測試,webbench 和 apache自帶的一款外掛程式ab webbench可以測試get,head等請求,但不支援post請求,由於我正好是post請求測試,所以只好捨棄它了,改用了apache自帶的外掛程式ab apache benchmark 這個外掛程式...
C 實現伺服器壓力測試框架
c 實現伺服器壓力測試框架 flyfish 2015 3 9 模擬大量客戶端對伺服器進行壓力測試框架 標頭檔案 pragma once include include include include include class csession public boost enable shared ...
Jmeter實現壓力測試 多併發測試
一 jmeter home 例 d apache jmeter 4.0 d apache jmeter 4.0 lib ext apachejmeter core.jar jmeter home lib jorphan.jar jmeter home lib logkit 2.0.jar 四 進入j...