本帖最后由 LukeLiu 于 2020-4-17 10:12 编辑
当电脑系统的print spooler 服务没有开启,会无法正常打开V6.0.0.0版本的活字格设计器。这个问题的发现来自于一位格友的求助,他刚刚安装的活字格设计器V6.0.0.0公测版,无法正常打开,异常的效果:
加载窗口昙花一现后,这位格友没迎来设计器主窗口。当这位格友就这样来回看了几遍后,发现窗口这么快消失并不是因为自己的电脑配置太好的缘故,当机立断,发帖求助。
后续的沟通呢,通过格友提供的日志与我们开发小哥哥的协助,终于找到了该异常的原因,并反馈给了这位格友处理方法,最终协助他解决了这个问题。 当然,想到也许会有其他的格友遇到此类同样的问题,我们马不停蹄的整理出来这个帖子,把这个问题的解决方法的细节展现给大家。
我们是如何找出问题原因的
我想,仅仅通过开篇的动图就立下判断出问题的原因,实际上是很困难的。此时探寻问题的路子,唯寄托于日志。 给这位格友表达了现状:咱们一起看看活字格设计器产生的日志,说不定能发现端倪,获取活字格设计器日志的操作方式说明:如何获取设计器的日志?
等来了格友发来的日志文件,我以Error为关键字,在日志全文里查找,果不其然,发现猛虎:
忽然间,三个问题如弹幕从左脑溜到右脑: RPC是什么呢? 活字格设计器打不开,和RPC服务有什么关系? 如何处理这个异常?
我先去补充相关背景,当然由百度出发,找到: RPC (Remote Procedure Call)即远程过程调用,是分布式系统常见的一种通信方法,已经有 40 多年历史。当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手段之一。
来自:--知乎
好像没明白,怕自己陷入一个大坑,感觉自己对于问题的排查方向走偏了,遂求助了我们的开发小哥哥,让人家明白了我们的问题后,开发小哥哥反馈给我们: 6.0.0.0的活字格设计器启动时会检查打印机服务,这个服务属于RPC服务范畴,因此,他认为有可能是打印机的后台处理服务(print spooler 服务)没开启导致的问题。
得,我们有了一个比较明确的猜测,需要我们测试验证它。
我们是如何解决这个问题的
我和开发小哥哥一起做测试验证: 1. print spooler 服务关闭后,6.0.0.0活字格设计器无法打开。
2. 开启print spooler服务后,6.0.0.0活字格设计器正常打开。
因此,得出结论,该造成该设计器无法打开的原因是“print spooler 服务没开启导致”。
这位格友了解到解决方法后,这个问题确实迎刃而解了,但我们还没来感受问题已解决的愉悦,新的问题接踵而至——另外一位格友提了一个安全问题:“我们公司基于安全考虑,服务器禁止开启打印机服务”。
问题的形势陡然变得两难:有解决方法,但不满足人家的需求。
幸好开发小哥哥这时还没下班回家,赶忙又问了他这个问题。他说:“不必担心,服务器端没开启这个打印服务是不影响服务器端程序正常运行的,因为,活字格服务器端根本不会调用打印服务。”
被这样一点播,想通了,是啊,我们打印的流程本身就是在访问者的电脑上,服务器哪需要调用打印机呀。
所以结论:对于print spooler 服务,运行活字格设计器的电脑必须要开启,运行活字格服务器的电脑不需要开启。
虚惊一场,谨慎的担心是必要的,但这问题不存在。
总结
当我们出现活字格设计器或服务器运行异常的情况,若在论坛上没有搜索到解决方法,这时我们通过查看日志获取细节信息,也许会对我们排查问题提供很有用的帮助。
这个问题由于当系统的print spooler服务没有开启,从而影响了v6.0.0.0的设计器启动策略。之所以这里标明版本号,是因为,这将有可能是唯一出现这个问题的版本,之后的正式版,不会出现这个问题,6.0正式版的策略将会调整,或许会是这样:即使打印服务没开启,活字格设计器也会正常打开,当在设计器里操作打印相关的选项时,会检测打印服务是否开启。而后续关于这个策略的更新,我们会及时的同布的。
|