今天整理旧硬盘,翻出2021年许可服务器崩溃那天的截图,瞬间回忆全上来了。
那天是8月17号下午两点多,我记得特别清楚,外面下暴雨。我们公司用的是某款机械设计软件,总共有120个浮动许可,全公司近200号研发靠这套活着。本来那天大家干得好好的,突然群里就开始刷屏“连不上了”“报错-97”“重启软件没用”。我赶紧远程连上License Server,发现服务进程还在,但lmstat敲进去直接无响应,CPU飙到100%,内存占用爆了。我试着重启服务,结果起不来了,报“License file corrupted”。我当时脑子嗡的一下,再一看那个license.dat文件,大小变成0字节了。后来复盘是那块老硬盘有坏道,正好写到了授权文件所在的扇区,整个文件直接没了。全公司停摆了两个半小时,一百多号人啥也干不了,在座位上干瞪眼,生产那边催图纸的电话快把我手机打没电了。那天之后老板说了句“你这套东西太不靠谱了”,我记到现在。
那次崩掉之后我就琢磨一个问题,正版授权一年大几百万,但一崩就全完蛋,而且平时利用率也就那样,老板嫌贵,研发嫌不够,我夹在中间两头不是人。后来我摸索出来一套玩法,核心就三条——不跟老板说加钱的事,先把现有许可“洗”一遍,再拿数据去跟供应商磨,磨下来的差价正好覆盖管理工具的钱,老板那边一听不用追加预算还能提效率,当时就批了。第一条就是花了两周时间把全公司所有许可的使用日志扫了个底朝天,什么模块几点到几点用得多、哪些人占了不干活、周末有没有人用,全拉成表。不拉不知道,我们那120个许可里面有专门的仿真模块,一年到头使用率不到20%,但买的时候是按全价打包进来的。我就把这20%的模块单独拎出来,把报告甩给老板看,说这东西我们一年用了不到50次,每次成本摊下来上万块,老板盯着那个数愣了半天,说了句“那明年别续这个模块了”。那年续费直接砍掉了这个模块,省下来将近70万。那阵子有个小插曲,我连着好多天在服务器上扒日志,每天搞到晚上八九点才走,有一天保安大爷过来敲我门说“小伙子你怎么天天不走,我锁门了哈”,我说马上马上,结果大爷真把大门锁了,我翻窗户出去的,那天还下着小雨。
第二条是把省下来的那笔钱的一小部分,大概十几万,去买了套轻量级的许可回收监控工具,就是那种不用改软件不改服务器的纯旁路探针。装上之后头一个月,我就用这套东西把闲置超时的会话自动回收,日均可用并发数直接从120等效拉到了差不多140。也就是说我没多花一分钱买新许可,但实际能用的“轮转量”多了。老板后来问我“你是不是偷偷加了授权”,我说没加,就是把占着不动的请出去了。第二年的续费谈判我就拿着这套数据去跟供应商谈,说你看我实际峰值就用到90多,你凭什么让我续120个,供应商那边磨了两轮最后同意把授权基数降到105,又省了一笔。那段时间有个搞笑的,装完回收工具第一周,有个人在群里喊“我明明打开软件去吃饭了回来怎么被踢了”,我私聊他说你走了快一个小时软件空转,系统自动回收了,你再打开就行,他说“哦那还行我以为坏了”,后来他自己养成了走之前先关软件的习惯。

第三条是把我上面这两步攒下来的“实际使用数据+回收后的等效并发数”做成了一张季度汇报表,每季度末发给老板看一次。开头就三行字:当前授权总数、实际峰值占用、等效可用数。老板前面看两次没吭声,第三次主动回了我一句“这么说咱们还能再砍几个模块?”后面就顺了,每年续费前我再也不用临时抱佛脚去求预算了,老板自己心里有数了。有个小插曲是第一次发这个表的时候我手滑把附件的Excel链到了另一个旧版本文件,老板打开看到的全是去年的旧数据,当时他回了个“你是不是发错了”,我一看赶紧补发了一版,自己尴尬得不行。
两个我现在还沿用的避坑小习惯。第一个就是每个月1号自动备份一次license.dat文件到三个地方:服务器本地、NAS、我自己的笔记本,再也不敢单点存了。第二个就是每次改完FlexNet的配置文件之后,在改之前先把当前版本压缩包存一份,命名带日期,这样万一改出问题三分钟之内就能回滚,不用再像当年那样抱着服务器哭。
现在看当年的截图,还能想起那天手忙脚乱的样子。