Skip to content

CMake 配置指南 ​

概述 ​

UVHTTP 支持通过 CMake 配置各种编译时常量,允许用户根据实际需求调整库的行为和性能。

配置方法 ​

1. 基本配置 ​

编辑 CMakeLists.txt 中的 option() 或 set() 配置常量的值,然后运行 make build:

bash
make build

在 CMakeLists.txt 中预设配置:

cmake
set(UVHTTP_MAX_HEADER_NAME_SIZE 512 CACHE STRING "Max HTTP header name size")
set(UVHTTP_MAX_HEADER_VALUE_SIZE 8192 CACHE STRING "Max HTTP header value size")

可配置常量 ​

HTTP 相关 ​

常量名默认值说明推荐配置
UVHTTP_MAX_HEADER_NAME_SIZE256HTTP 头部名称最大长度256-512
UVHTTP_MAX_HEADER_VALUE_SIZE4096HTTP 头部值最大长度4096-8192
UVHTTP_MAX_HEADERS64HTTP 头部最大数量32-128
UVHTTP_MAX_URL_SIZE2048URL 最大长度2048-4096
UVHTTP_MAX_PATH_SIZE1024路径最大长度512-2048
UVHTTP_MAX_METHOD_SIZE16HTTP 方法最大长度16
UVHTTP_MAX_BODY_SIZE1048576请求体最大大小(字节)根据需求调整

连接管理 ​

常量名默认值说明推荐配置
UVHTTP_MAX_CONNECTIONS_DEFAULT2048默认最大连接数1024-4096
UVHTTP_MAX_CONNECTIONS_MAX10000最大推荐连接数10000-100000
UVHTTP_BACKLOG8192TCP backlog 大小1024-8192
UVHTTP_CONNECTION_TIMEOUT_DEFAULT60连接超时时间(秒)30-120
UVHTTP_TCP_KEEPALIVE_TIMEOUT60TCP keepalive 超时(秒)30-120

缓冲区管理 ​

常量名默认值说明推荐配置
UVHTTP_INLINE_HEADERS_CAPACITY32内联头部容量16-64
UVHTTP_INITIAL_BUFFER_SIZE8192初始缓冲区大小(字节)8192-16384
UVHTTP_READ_BUFFER_SIZE16384读取缓冲区大小(字节)16384-65536

静态文件服务 ​

常量名默认值说明推荐配置
UVHTTP_STATIC_MAX_CACHE_SIZE1048576静态文件缓存大小(字节)根据内存调整
UVHTTP_STATIC_MAX_PATH_SIZE1024静态文件路径最大长度512-2048
UVHTTP_STATIC_MAX_FILE_SIZE10485760静态文件最大大小(字节)根据需求调整
UVHTTP_STATIC_SMALL_FILE_THRESHOLD4096小文件阈值(字节)4096-8192

WebSocket ​

常量名默认值说明推荐配置
UVHTTP_WEBSOCKET_DEFAULT_MAX_FRAME_SIZE16777216WebSocket 最大帧大小(字节)根据需求调整
UVHTTP_WEBSOCKET_DEFAULT_MAX_MESSAGE_SIZE67108864WebSocket 最大消息大小(字节)根据需求调整
UVHTTP_WEBSOCKET_DEFAULT_RECV_BUFFER_SIZE65536WebSocket 接收缓冲区大小(字节)32768-131072
UVHTTP_WEBSOCKET_DEFAULT_PING_INTERVAL30WebSocket ping 间隔(秒)10-60
UVHTTP_WEBSOCKET_DEFAULT_PING_TIMEOUT10WebSocket ping 超时(秒)5-30

异步文件操作 ​

常量名默认值说明推荐配置
UVHTTP_ASYNC_FILE_BUFFER_SIZE65536异步文件缓冲区大小(字节)32768-131072
UVHTTP_ASYNC_FILE_MAX_CONCURRENT64最大并发文件读取数32-128
UVHTTP_ASYNC_FILE_MAX_SIZE10485760异步文件最大大小(字节)根据需求调整

性能优化 ​

常量名默认值说明推荐配置
UVHTTP_SENDFILE_CHUNK_SIZE65536sendfile 块大小(字节)32768-131072
UVHTTP_SENDFILE_TIMEOUT_MS30000sendfile 超时(毫秒)10000-60000
UVHTTP_STATIC_MAX_CACHE_SIZE10485760静态文件缓存大小(字节,10MB)5242880-52428800
UVHTTP_LRU_CACHE_BATCH_EVICTION_SIZE2LRU 缓存批量驱逐大小1-10
UVHTTP_ZEROCOPY_MIN_BODY4096走零拷贝 writev 发送路径的最小响应 body 大小(字节)4096-8192

限流 ​

常量名默认值说明推荐配置
UVHTTP_RATE_LIMIT_MAX_REQUESTS1000000限流最大请求数根据需求调整
UVHTTP_RATE_LIMIT_MAX_WINDOW_SECONDS86400限流最大时间窗口(秒)根据需求调整
UVHTTP_RATE_LIMIT_MIN_TIMEOUT_SECONDS10限流最小超时(秒)5-30

其他 ​

常量名默认值说明推荐配置
UVHTTP_CLIENT_IP_BUFFER_SIZE64客户端 IP 缓冲区大小64
UVHTTP_IP_OCTET_MAX_VALUE255IP 八位组最大值255

配置示例 ​

示例 1:高并发场景 ​

编辑 CMakeLists.txt,添加或修改以下配置,然后运行 make build:

bash
make build

示例 2:大文件传输 ​

编辑 CMakeLists.txt,添加或修改以下配置,然后运行 make build:

bash
make build

示例 3:内存受限环境 ​

编辑 CMakeLists.txt,添加或修改以下配置,然后运行 make build:

bash
make build

示例 4:WebSocket 优化 ​

编辑 CMakeLists.txt,添加或修改以下配置,然后运行 make build:

bash
make build

注意事项 ​

  1. 内存影响:增大缓冲区和缓存大小会增加内存使用量
  2. 性能权衡:较大的缓冲区可能提高性能,但会增加内存占用
  3. 平台限制:某些值受操作系统限制(如文件描述符数量)
  4. 测试验证:修改配置后应进行充分的性能测试
  5. 文档更新:如果修改了默认值,请更新相关文档

验证配置 ​

编译后,可以通过以下方式验证配置:

bash
# 构建项目
make build

# 查看编译命令中的宏定义
grep UVHTTP_MAX_HEADER_NAME_SIZE build/CMakeCache.txt

# 运行测试验证
./dist/bin/uvhttp_unit_tests

相关文档 ​

基于 MIT 许可证发布