问题背景
公司财务部门共享一台 HP LaserJet M507dn 黑白激光打印机,通过 USB 连接到一台 Windows 10 工控机,以 Windows 共享打印的方式供同楼层 20 名财务人员使用。日均打印量约 500 页,以 A4 票据和报表为主。
故障现象
2024 年 5 月初开始,财务同事陆续反馈:打印机每隔 1-2 小时会自动显示"脱机"状态,期间的打印任务全部进入队列等待。每次联系 IT 过去重启 Print Spooler 服务后恢复,但过不了多久又会脱机。
|
|
重启服务的脚本成了"每日必修课",一天要执行五六次。
排查过程
第一步:检查基础连接
|
|
网络连通性无问题。打印机 Web 管理页面也能正常打开。
第二步:检查系统日志
|
|
日志中出现规律性的错误:
|
|
每 90 分钟左右出现一次 SNMP 超时,然后打印机状态变更为 Offline。
第三步:检查打印机电源管理
登录打印机 Web 管理界面 → 设置 → 电源管理:
|
|
打印机设置了 90 分钟无任务自动休眠。进入休眠后,打印机网口模块也进入低功耗状态,无法响应 SNMP 查询。
第四步:对比 SNMP 和 WSD
Windows 默认使用两种协议检测打印机状态:
- SNMP:主动轮询打印机状态,超时后判定脱机
- WSD(Web Services for Devices):被动接收打印机事件通知
当前配置中,SNMP 轮询间隔为 60 秒,而打印机休眠后 SNMP 无响应 → 被判定为脱机 → 休眠期间无任务 → 无法自然唤醒 → 恶性循环。
解决方案
- 方案一(推荐,已实施):关闭 SNMP 状态检测
|
|
在端口配置中取消勾选 “SNMP Status Enabled”。
-
方案二(备选):延长打印机休眠时间 在 Web 管理界面将休眠定时器从 90 分钟延长到 480 分钟(工作时间不进入休眠)。
-
方案三(长期):启用 WSD 在打印机和工控机上同时启用 WSD 协议,WSD 能在打印机恢复时主动通知 Windows,比 SNMP 轮询更可靠。
-
最终方案:关闭 SNMP 检测 + 禁用工作时间休眠,双管齐下。
根因分析
直接原因:打印机进入节能休眠 → 网口模块停止响应 SNMP 查询 → Windows 判定打印机 Offline → 累积打印任务 → 人工重启恢复 → 下次休眠复发。
深层原因:HP 企业级打印机的默认 90 分钟休眠策略是为欧美办公环境设计的(打印频率高、不间断),与财务部门的实际使用模式(高峰集中在上午、下午各固定时段打印报表)不匹配。
预防措施
- 打印机准入标准:新打印机上线前统一配置电源策略,关闭工作时间休眠或设置 >8 小时
- 端口配置模板:所有共享打印机默认关闭 SNMP 状态检测,改用 WSD 事件通知
- 监控脚本:编写定时检测脚本,发现 Offline 状态超过 5 分钟自动重启 Print Spooler
- 打印服务文档:更新 IT 知识库,记录常见打印机脱机的排查步骤
总结
打印机"脱机"是桌面运维中最常见的报修之一,但多数时候不是网络或驱动问题,而是打印机节能策略与 Windows 检测机制的冲突。SNMP 轮询在打印机醒着时好使,一旦打印机节能,就成了"狼来了"。关闭 SNMP 检测虽然会失去打印机状态的主动感知,但对共享打印机来说,用户体验的改善远大于状态监控的损失。