以下**是自己寫的乙個測試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,採用多程序的方式連線伺服器產生壓力。
wgettar 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...