測試web伺服器的壓力測試程式

2021-06-26 07:12:32 字數 1854 閱讀 1556

以下**是自己寫的乙個測試web伺服器的壓力測試程式,採用epoll多路分發模型,雖然是單執行緒但可以產生足夠的壓力。感興趣的同學可以修改一下測試自己的伺服器程式。

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define my_logfile "./log_stress"

static char* ip = null;

static int port = 0;

void mydebug(const char *fmt, ...)

va_start(ap, fmt);

outlen=vsprintf(debugbuff,fmt,ap);

va_end(ap);

*(debugbuff+outlen) = 0;

fprintf(fp,"%d-%02d-%02d %02d:%02d:%02d====",pnowtime->tm_year+1900,pnowtime->tm_mon+1,pnowtime->tm_mday,pnowtime->tm_hour,pnowtime->tm_min,pnowtime->tm_sec);

fprintf(fp,"%s",debugbuff);

fclose(fp);

}int setnonblocking(int fd)

void addfd(int epoll_fd,int fd)

int write_nbytes(int sockfd,const char* buffer,int len)

else if(bytes_write==0)

len = len - bytes_write;

buffer = buffer + bytes_write;

if(len<=0) }}

int read_once(int sockfd,char* buffer,int len)

else if(bytes_read==0)

else

return 0;

}int start_conn(int epoll_fd,int num,const char* ip,int port){

int ret = 0;

struct sockaddr_in address;

bzero(&address,sizeof(address));

address.sin_family = af_inet;

inet_pton(af_inet,ip,&address.sin_addr);

address.sin_port = htons(port);

for(int i = 0;i

在網上看到了乙個不錯的壓力測試工具webbench,採用多程序的方式連線伺服器產生壓力。

wget 

tar zxvf webbench-1.5.tar.gz

cd webbench-1.5

make && make install

webbench -c 500 -t 30

webbench - ****** web benchmark 1.5

benchmarking: get

500 clients, running 30 sec.

speed=3230 pages/min, 11614212 bytes/sec.

requests: 1615 susceed, 0 failed.

伺服器壓力測試心得

最近完成了乙個伺服器框架,於是測試的他的qps,發現了乙個奇怪的問題,測試出來qps只有3w s,與前面說的10w s,有很大的差距。使用trace命令列印出glibc函式呼叫資訊,發現了大部分的時間程式處於鎖等待狀態,我開始懷疑認為是內部使用鎖占用太多時間。於是乎改為無鎖佇列。關於無鎖佇列已經記錄...

後端伺服器的壓力測試

比如我要測試伺服器的連線數最大能達到多少?以前測試的方法是乙個客戶端開啟n個執行緒 n 1000 或者2000,3000 但是並沒有達到測試的效果。做過一些測試,基本方法是啟動乙個客戶端,通過多個執行緒來同時來連線客戶端,乙個執行緒相當於乙個客戶端連線,執行緒數量是可控制的,設定引數一般為 100,...

用Python編寫WEB伺服器壓力測試工具

code by 李嘉 不對因使用 產生任何後果負任何責任 需要測試的 url 列表,每一次的訪問,我們隨機取乙個 urls test?page test2?orderby a page test2?orderby d page max page 10000 server name 192.168.0...