Windows多媒体站点搭建:18年经验谈权限配置一步到位
|
凌晨三点二十,我盯着机房监控屏右下角那个小红点——不是告警灯,是去年双十一贴上去的胶布,遮着一块坏像素,现在它在闪,像心跳停了半拍又自己接上了。 我原以为就一权限问题:IIS Application Pool Identity 用的是 Network Service,跑个 FFmpeg 转码脚本连临时目录都写不进去。结果改完 identity、加了 Users 组、还手动给 D:\\media\\transcode 赋了 Full Control,服务起来三分钟,又挂。日志里只有一行:0x80070005,访问被拒绝。可文件夹属性里明明显示 Administrators 和 IIS_IUSRS 都勾着允许——我连右键菜单都点了三遍“高级”,进去看继承是不是被禁了,又退出来再点“编辑”,把“替换子容器和对象的所有者”打钩,再点确定,再等,再刷新…… 窗外在下雨,雨点打在机房北侧那扇漏风的旧窗上,嗒、嗒、嗒,节奏比告警声还准。值班室桌上泡面桶还在,葱花浮在汤面上,凉透了。客服小李微信弹进来:“王哥,客户说视频上传进度条卡在 99%,点重试直接 500。”我没回。老板在运维大群里发了个“?”,后面跟了个“急”,再后面是三个省略号。我截图发过去,附了句:“IIS 日志里全是 500.19,配置错误。”他秒回:“不是说你十年前就在 Windows 上搭流媒体?” 我懒得回。十年前?那是 XP+IIS5,装个 RealServer 都得调 registry。现在这堆东西:Windows Server 2022、IIS 10、.NET 6 Runtime、Media Foundation、DirectShow 插件、还有客户非要用的 WebAssembly 解码器预加载模块……谁记得清哪一层在查哪个 ACL?更别说那个叫 “TrustedInstaller” 的幽灵用户——你右键属性根本看不到它,但 Event Viewer 里明明白白写着:“操作被 TrustedInstaller 拒绝”。我翻了两小时 KB 文档,最后是运维老张甩来一句:“试试把 AppPool Identity 改成 LocalSystem?”我照做,好了。两分钟后,磁盘报警跳出来:D:\\media\\archive 占了 97%。原来备份脚本写的路径没加时间戳,每天全量往一个 .zip 里塞,七天后变一个 82GB 的巨婴。备份没跑?不,它跑了。它天天跑,跑得比我还勤。 上个月搬家,我亲手把旧服务器抬进新机柜,背疼了半个月。那天雨也这么大,物流司机骂骂咧咧扛着纸箱进电梯,箱子上印着“锐捷 RG-ES208G”,结果拆开一看是二手 Cisco 3750,序列号被酒精擦过三次,隐约还能看出 R-E-A-L-T-E-C-H。我就笑。笑完才发现新机柜底座螺丝松了,晃得整个机架共振,嗡嗡的,像老式冰箱压缩机快死了。现在这嗡嗡声,混着窗外雨声,听着特别耳熟。
文章配图,仅供参考 DNS 解析没出问题,证书没过期,带宽也没跑满——监控图上绿得刺眼。可客户上传的 MP4 里有 HDR 元数据,FFmpeg 一碰到就崩,崩完进程不退出,只占内存不释放,十来个僵尸转码任务压住 CPU,而 IIS 竟然还傻乎乎地接请求,直到 w3wp.exe 吃光所有分页文件,整个应用池跪得悄无声息。没人知道。连我们自己的测试账号传个 4K 视频,都只看到“上传失败”,根本不知道背后是个静默内存溢出。我查 Process Explorer 的时候,发现有个 svchost 进程居然挂着 mediafoundation.dll,PID 是 1208——这玩意儿早该归到 AudioSrv 服务下面,现在硬是挂在 RPCSS 上,鬼知道谁动过注册表。这个我到现在也没想明白。小张——就是那个总穿灰卫衣、耳机线永远缠在手指上的实习生——蹲在机柜前用万用表测 PDU 接口电压,念叨:“王工,这电流纹波超标了,零线好像虚接。”我摆摆手。管它呢。反正现在所有请求都打到备用 Nginx 反向代理上了,只是 HLS 切片延迟从 1.2 秒涨到 4.7 秒,客户说“画质糊了”,其实只是 GOP 失步。糊就糊吧。糊得不致命,总比黑屏强。去年某银行上线人脸识别系统,也是类似逻辑,前端 JS 用 base64 传活体视频帧,每帧 8MB,Nginx 默认 client_max_body_size 是 1MB,报错提示居然是“SSL handshake timeout”——他们花了三天查证书链,第四天才看见 error.log 里那一行被滚动刷掉的 413。真逗。 中午十二点四十七分,我在工位抽了根烟,看着烟头明明灭灭。烟灰缸底下压着一张纸,上面是我手写的三条路径:D:\\media\\temp → D:\\media\\work → D:\\media\ 优胜劣汰?对。活下来的,不是最懂 SID 映射的人,是那个敢把 AppPool Identity 改成 LocalSystem、敢让备份脚本把 .zip 文件名加 $env:COMPUTERNAME + Get-Date -f 'yyyyMMdd'、敢在 prod 机上手动删掉 %windir%\\system32\\LogFiles\\W3SVC1 下三个月前的日志的人。规则是死的,ACL 是僵的,只有人手抖的时候,权限才真正流动起来。所以别跟我谈什么最小权限原则。最小?最小就是没权限——服务器裸奔十分钟,比你纠结三小时 DACL 还安全。 明天先把告警阈值调了。D 盘 85% 就响,不是 95%。还有,把 svchost 那个 mediafoundation.dll 的加载项,在 regedit 里找出来,删掉。删之前先导出,存桌面,文件名就叫“别删_202504_backup.reg”。我信不过自己。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


多媒体开发必修:视觉惊艳与秒开兼得的网站设计法则
Windows数据科学环境搭建:15年性能优化师的避坑与高效配置实战
Windows站点搭建的3个致命安全断点
Windows运行库高效管理:15年经验构建稳定开发环境