为所有 Lua API 文件添加完整的包级和函数级文档注释: - api_balancer: 负载均衡 API(set_current_peer, set_more_tries 等) - api_ctx: 请求上下文存储 API(ngx.ctx) - api_location: 子请求捕获 API(ngx.location.capture) - api_log: 日志输出 API(ngx.log) - api_req: 请求对象 API - api_resp: 响应对象 API - api_shared_dict: 共享字典 API - api_socket_tcp: TCP socket API - api_timer: 定时器 API - api_var: 变量 API - engine: Lua 引擎核心 - context: 请求上下文管理 - coroutine: 协程调度器 - middleware: 中间件集成 - filter_writer: 响应过滤器 - cache: Lua 脚本缓存 - shared_dict: 共享字典实现 - socket_manager: socket 连接管理 注释格式遵循 Go 官方风格,包含功能说明、参数说明和注意事项。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
87 lines
2.8 KiB
Go
87 lines
2.8 KiB
Go
// Package lua 提供 Lua 脚本嵌入能力。
|
||
//
|
||
// 该文件定义 Lua 引擎的配置结构及其默认值,包括:
|
||
// - 并发控制:最大协程数、超时设置、协程栈大小
|
||
// - 缓存配置:字节码缓存大小与 TTL
|
||
// - 安全选项:OS/IO/Load 库的启用控制
|
||
// - 内存优化:协程栈收缩、池预热
|
||
//
|
||
// 注意事项:
|
||
// - 安全相关的库(OS、IO、LoadLib)默认禁用,防止不安全操作
|
||
// - 协程栈默认 64KB,最大 256KB,较小的栈可减少内存分配
|
||
// - 最大执行时间与协程超时默认均为 30 秒
|
||
//
|
||
// 作者:xfy
|
||
package lua
|
||
|
||
import (
|
||
"time"
|
||
)
|
||
|
||
// Config Lua 引擎配置。
|
||
//
|
||
// 控制引擎的并发、缓存、安全和内存行为。
|
||
type Config struct {
|
||
// MaxConcurrentCoroutines 最大并发协程数(默认 1000)
|
||
MaxConcurrentCoroutines int
|
||
|
||
// CoroutineTimeout 单个协程执行超时(默认 30 秒)
|
||
CoroutineTimeout time.Duration
|
||
|
||
// CodeCacheSize 字节码缓存最大条目数(默认 1000)
|
||
CodeCacheSize int
|
||
|
||
// CodeCacheTTL 字节码缓存生存时间(默认 1 小时)
|
||
CodeCacheTTL time.Duration
|
||
|
||
// MaxExecutionTime 最大执行时间(默认 30 秒)
|
||
MaxExecutionTime time.Duration
|
||
|
||
// CoroutineStackSize 协程栈大小(默认 64KB,最大 256KB)
|
||
CoroutineStackSize int
|
||
|
||
// CoroutinePoolWarmup 协程池预热数量,启动时预创建的协程结构数
|
||
CoroutinePoolWarmup int
|
||
|
||
// EnableFileWatch 是否启用文件变更检测(文件修改后自动重新编译)
|
||
EnableFileWatch bool
|
||
|
||
// EnableOSLib 是否启用 Lua os 库(默认禁用,出于安全考虑)
|
||
EnableOSLib bool
|
||
|
||
// EnableIOLib 是否启用 Lua io 库(默认禁用,出于安全考虑)
|
||
EnableIOLib bool
|
||
|
||
// EnableLoadLib 是否启用 Lua loadfile/dofile(默认禁用,出于安全考虑)
|
||
EnableLoadLib bool
|
||
|
||
// MinimizeStackMemory 启用栈内存自动收缩以减少内存占用
|
||
MinimizeStackMemory bool
|
||
}
|
||
|
||
// DefaultConfig 返回默认配置。
|
||
//
|
||
// 安全策略:
|
||
// - os、io、loadlib 库默认禁用,防止文件系统访问和动态代码加载
|
||
// - 文件变更检测默认启用,便于开发时热更新
|
||
// - 协程栈默认 64KB 以节省内存
|
||
//
|
||
// 返回值:
|
||
// - *Config: 预填充的默认配置实例
|
||
func DefaultConfig() *Config {
|
||
return &Config{
|
||
MaxConcurrentCoroutines: 1000,
|
||
CoroutineTimeout: 30 * time.Second,
|
||
CodeCacheSize: 1000,
|
||
CodeCacheTTL: time.Hour,
|
||
EnableFileWatch: true,
|
||
MaxExecutionTime: 30 * time.Second,
|
||
EnableOSLib: false,
|
||
EnableIOLib: false,
|
||
EnableLoadLib: false,
|
||
CoroutineStackSize: 64, // 优化:较小的栈减少内存分配
|
||
MinimizeStackMemory: true,
|
||
CoroutinePoolWarmup: 4, // 预热4个协程结构
|
||
}
|
||
}
|