跳转到内容

生产实践

复制本页

能成功处理一张图片,不等于能够安全地运行一个长期服务。本栏目关注进程与对象生命周期、外部输入限制、可观测性,以及错误发生时应该保留哪些证据。

govips 生命周期

区分进程级 Startup/Shutdown 与每张 ImageRef 的 Close 责任,并避免错误的资源所有权。生命周期规则

不可信输入

理解 loader blocking 的作用与限制,并在应用层约束字节数、像素数、页数和处理时间。输入安全边界

生产问题往往跨越 Go 堆、libvips 缓存、原生分配器和进程 RSS。使用内存泄漏排查建立重复实验;遇到崩溃或竞态时查看并发安全排查。

  • 固定并记录实际 libvips 与绑定版本。
  • 明确输入字节、像素、页数和执行时间上限。
  • 在错误路径释放所有权明确的资源。
  • 对高风险操作保留可重复的最小输入与日志。
  • 不把单机基准或一次 RSS 采样推广成普遍容量结论。