KodouWZF
|
456b1ea62d
|
perf(传输): 已压缩格式组包时不再二次压缩
pptx/docx/xlsx/zip/mp4/jpg 这类本身已压缩的格式,再跑一遍 level 6 deflate
压缩率接近 0,但 CPU 照样全量消耗(约 0.04 秒/MB)。改为按文件名后缀判断,
命中清单的 entry 用 Deflater.NO_COMPRESSION,其余保持默认 level 6。
不用 ZipEntry.STORED 是因为它要求预先提供 size 和 CRC-32,会多一遍顺序读;
level 0 产出的仍是合法 zip(DEFLATE 存储块),接收端解包与校验逻辑无需改动。
清单从严,只收确定已压缩的格式,避免可压缩文件被误判导致包体变大。
元数据 JSON 可压缩,写它之前显式还原 level。
|
2026-11-03 22:07:00 +08:00 |
|
KodouWZF
|
c5d19f47a2
|
perf(传输): xs_file_record.md5_code 补索引
文件入库时用 MD5 做内容去重查询(FileServiceImpl 上传后 find(md5Code)),
该列此前没有索引,每个文件入库都是一次全表扫描。解包一个含 N 个文件的
传输包就是 N 次全表扫描,300 人规模下 xs_file_record 达数万行时,
单文件入库可省几十到几百毫秒,100 个文件的包可省数秒到数十秒。
按 init 与 upgrade 双写:MySQL 版 DDL 加 KEY,PG 版加 CREATE INDEX,
新建 upgrade-20261103-transfer-perf.sql 供已上线环境增量执行
(DM8 走第 1 节,PG 走第 2 节,并给出 CONCURRENTLY 备选)。
交付包 sql/01-init-table.sql 按 README 要求从仓库整份覆盖,不手改副本。
|
2026-11-03 22:03:33 +08:00 |
|
KodouWZF
|
06fb35b984
|
perf(传输): 摆渡目录监听周期 1 分钟改为 5 秒
端到端延迟里有一半是轮询空等:收发两侧各等一次,1 分钟周期下平均空等
60 秒、最坏 120 秒,这是「一页文件也要 2 分钟」的主因,而真正干活不到 2 秒。
改成 5 秒是安全的:空目录一轮只有两次 Files.list + 过滤,开销可忽略;
Spring 的 cron 任务要等上一轮跑完才排下一轮,同一实例内不会重叠。
副作用是损坏包被更频繁重试(失败包当前不删除也不改名,mtime 最老所以
每轮排第一),彻底解决靠方案 5.2 的 .error 改名让位。
部署说明第 10 条原来写「不要改成秒级」,与新默认值矛盾,一并纠正。
|
2026-11-03 22:01:25 +08:00 |
|
KodouWZF
|
4114c1f434
|
perf(传输): 组包与解包缓冲区 512B/8KB 提升到 64KB
JDK8 的 ZipOutputStream 内部 deflate 输出缓冲硬编码 512 字节且不可配置,
必须在外层包 BufferedOutputStream 才能减少落盘次数;读侧 8KB 同样偏小。
传输目录与文件存储目录都是宿主机 bind mount,单次 syscall 可能跨
FUSE/网络/光闸监控驱动边界,实测成本约 1ms,小缓冲把耗时放大数十倍。
改 5 处:组包输出流、组包读源文件、解包输入流、解包读 entry、
本地存储落盘。每 MB 的 syscall 次数从 2176 降到 32,
按实测模型 50MB 组包从约 117s 降到约 3.8s。
方案见 backend/docs/传输链路性能优化方案.md 第 5.3 节。
|
2026-11-03 21:57:28 +08:00 |
|
KodouWZF
|
f817bf0701
|
docs(传输): 跨网传输链路性能优化方案与现场验证方法
现场反馈一页文件要 2 分钟才进内网。实测组包 19.6MB 耗时 45.9s,
其中 SQL 仅 57ms,其余全在文件 I/O,折算 2.33 秒/MB,比正常 deflate
慢 50-100 倍,根因是 512B/8KB 小缓冲在 bind mount 上放大 syscall 次数。
沉淀耗时归因模型、不改代码即可切分端到端 6 段的现场测量方法、
6 项优化的改法与验收标准,以及本次明确不做的事及理由。
|
2026-11-03 21:57:15 +08:00 |
|
KodouWZF
|
47273ae3fd
|
init: 信创文件安全传输系统内外网本地 Docker 部署
包含 s-file 后端、React 前端、MeshSafe 安全检测对接,以及内外网两套
compose/nginx/配置(仅前端 28180/28280 对外发布,其余端口不暴露)。
说明:deploy/config/application-iw.yml 与 application-ow.yml 按维护者
明确要求原样入库,其中含本机 Docker 用的库口令、RabbitMQ 口令与 JWT
密钥;上生产前需替换。
|
2026-11-02 10:59:03 +08:00 |
|