压力测试。用TinyFrame编写Web服务器,Apache Bench(AB)程序作为客户端。客户端发出请求,服务器响应字符串“test”,以此来测量服务器并发量。
测试环境:
- 服务器配置:Pentium(R) Dual-Core CPU E6700 @ 3.2GHz 3.2GHz,2G RAM,Ubuntu系统。
- 客户端配置:Intel(R) Core2 Duo CPU T6670 @ 2.2GHz 2.2GHz,2G RAM,虚拟机Ubuntu系统。
- 两台机器处于同一快速以太网(100Mbps)中。
服务端测试代码:
#include <stdio.h>
#include "servermanager.h"
#include "server.h"
void request_handler(connection *conn)
{
static char buf[] = "HTTP/1.1 200 0K\r\nConnection:keep-alive\r\nContent-length:4\r\n\r\n"
"test";
/* 发送HTTP响应 */
connection_send(conn, buf, sizeof(buf) - 1);
/* 清空输入缓冲区 */
array_clear(conn->input_buffer);
}
int main()
{
server_manager *manager = server_manager_create();
/* 监听2016端口 */
inet_address addr = addr_create("any", 2016);
/* socket可读时调用request_handler函数 */
server *server = server_create(manager, addr, request_handler, NULL);
/* 开始监听 */
server_manager_run(manager);
return 0;
}
总请求数为100000,并发连接数从1到1000逐渐递增,测试结果如下:
Concurrency Level Requests per second
1 1667.90
10 4592.89
50 7230.34
100 6617.45
200 6440.19
400 5002.37
600 4572.24
800 4195.10
1000 5540.50