电脑必备
部署包解压到系统盘还是数据盘,我拿日志时间戳对了一遍才敢定规矩
88 0 13
最近连着处理几个模块的部署包,每个解压完 2~3G,临时目录默认在 C 盘,跑两天就红了。翻了翻解压缓存路径的帖子,发现大家都在聊删缓存,但没人说部署包解压位置的选择问题。我这边正好有日志时间戳可以拿来对账,说下实测结果。
场景:Jenkins 拉下来的 tar.gz 部署包,解压后要跑启动脚本。以前默认解压到 /tmp,后来迁到数据盘 /data/deploy。
测试方法:挑了三台配置相近的测试机(16G 内存 / SSD),分别测了系统盘临时目录、数据盘目录、以及另一块机械盘目录,每个解压各跑 10 次取中位数。
结果:
- 系统盘临时目录:解压 1.2G 的包约 8.4s,但解压期间 IO 争用明显,后台日志写入延迟从 15ms 涨到 80ms+。
- 数据盘(同 SSD):约 9.1s,慢不到 1s,但日志写入延迟基本稳定在 20ms 以内。
- 机械盘:约 22s,直接放弃。
判断依据:部署包解压是顺序写,速度差距不大,但系统盘上解压会和系统日志、临时文件抢 IO,导致业务日志时间戳漂移。我们排查线上问题时经常靠日志时间戳对时序,这个漂移很要命。
目前的规矩:
- 部署包统一解压到数据盘
/data/deploy,目录按应用名/日期/分层,方便回滚时直接找历史版本。 - 解压工具用回 7-Zip 命令行,因为脚本里能直接写
7z x,还能指定-o输出路径,Win解压缩图形界面快是快,但没法嵌到部署脚本里。 - 缓存路径改到数据盘后,C 盘确实松快了不少,之前攒的临时文件有 12G,清完再观察一周没反弹。
踩过的坑:有一次图省事用 Win解压缩手动解压到桌面再拖过去,结果文件权限丢了,启动脚本报错。后来老老实实用命令行 tar -xzf 带 --no-same-owner 参数,才没再出问题。
你们部署包一般解压到哪个盘?有没有人试过把解压临时目录挂到内存盘?
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
