翻旧手机相册,看到2021年在佛山客户车间抢修许可服务器时拍的照片,满身灰尘蹲在地上,现在看还觉得好笑。
那天我到的时候是上午十点,客户是佛山那边一个做模具设计的厂子,车间里机器轰隆隆响,设计部十几号人全站在那干瞪眼。他们用的是RLM授权的某款模具仿真软件,总共就15个浮动许可,当天早上服务器突然起不来了,报错说license文件找不到。车间主任急得直拍桌子,说今天下午要交一版模具改型的仿真结果,现在所有人都开不了软件。我蹲在车间角落里那台布满灰的旧服务器前面,键盘上还粘着不知道是啥的油渍,风扇转得嗡嗡响。我一查发现是授权文件的路径被某个系统更新改了环境变量,RLM服务启动的时候指向了一个空目录。就这么简单的一个配置问题,但他们自己IT不敢动,等我从广州赶过去已经过去快三个小时了。我把路径改回来重启服务那一下,后面十几个工程师同时点开软件的声音此起彼伏,像机关枪一样啪啪啪。那天干完我蹲在地上拍了一张照片,脸上都是机房吹出来的灰,手机壳上还蹭了一块黑。
那次之后我总结出一个道理,不管你家是FlexNet还是RLM还是别的什么牌子的授权管理,底层逻辑就一条——许可是一个池子,有人占着不放就等于池子变浅了,回收就是往外舀水,你把舀水的速度控制好了池子就永远够用。什么厂商、什么协议都是表面东西,核心就是三件事。
第一件事是搞清楚"谁在往池子里舀水之前先占着不游"。那家模具厂15个许可,平时工程师有二十来个,按理说是错峰用的。但我发现他们每天早上有个习惯,一上班所有人先把软件点开,然后各自去开会、看邮件、喝茶,回来才开始干活,中间这半个多小时软件全空转着占坑。我当时用了个特别野的路子,直接在他们那台服务器上写了个批处理,每分钟跑一次检测所有客户端的鼠标位置变化和键盘输入,连续五分钟没动静的就往那个人的电脑上弹个窗口说"你的许可将在两分钟后回收,请动一下鼠标",动了的就重置计时,不动就直接回收。客户那边IT主管一开始还担心说"这会不会把人家正常用着给弹没了",我说你先跑三天观察模式看看,结果三天下来发现平均每天能回收出四五个空闲会话,根本没误伤。
第二件事是不要按照软件厂商推荐的那种固定超时去设回收,要跟着车间上下班节奏走。那家模具有三班倒,但设计部只有白班和中班,白班是早上八点到下午五点,中班是下午五点到凌晨一点。我后来给他们设了两套回收阈值,白班设25分钟空闲回收,因为白班的人爱开会爱走动,中班设45分钟,因为中班的人来了就是干活的,偶尔抽烟休息也就十来分钟就回来。我当初在现场急中生智想了另外一个办法,就是拿车间门口那台打卡机的数据同步到许可服务器上,谁打完下班卡走人了,他名下所有占着的许可在五分钟内自动回收,不用等超时。那天我跟他们IT主管蹲在服务器前面调这个的时候,他跟我说"你这套路我以前真没见过",我说我也是刚想出来的,你们车间打卡机有API接口我就顺手接了一下。

第三件事是别光盯着在线人数,要看真正跑起来的CPU负载。那家模具厂有次跟我说"我们许可永远不够用",我一看他们15个许可全满,但真正CPU在跑的不到6个,剩下9个虽然占了许可但软件界面开着啥也没干。这就是典型的"有会话没活儿"。我后来把检测逻辑改成了双重判定:键鼠空闲超过阈值并且客户端CPU负载低于5%的,判定为真正闲置,两个条件缺一不可。有个现场急中生智的细节是,有台工位机明明没人操作但CPU一直在跑,我远程连过去一看是后台有个病毒扫描占着资源,那台机器的用户早走了但电脑没关,扫描任务把CPU撑满了,键鼠却是闲着的。我当时不知道哪来的灵感,直接把那台机器的许可会话按"键鼠空闲超时"给回收了,虽然CPU在跑但人在那里又不在干活,用户回来再打开就行了。
最后说两个我现在去客户现场处理许可问题必带的随身工具。第一个是一个自带PE系统的小U盘,里面拷好了三个主流授权管理软件的独立运行包,FlexNet、RLM、LUM各一份,不管客户现场装的是哪个,我插上U盘就能跑命令不看他们的系统环境。第二件东西是一根双头Type-C的转接线和一根网线,客户笔记本现在都不带网口,我吃过两次亏没带转接线干瞪眼,后来就在钥匙扣上挂了一个小转接头,走哪都带着。
那张2021年佛山车间里的照片我现在留着,偶尔翻到还能想起来那天的灰和油。亲测好使,这周已经帮3个同事解决了同款问题。