题 为什么在Ubuntu Server 10.04上打印时有10秒的延迟?


我已经看到很多帖子在各种论坛上提出这个和类似的问题,但似乎没有人能够提供解决方案。

基本问题是这样的:

[Insert Old Version of Linux Distro]上的打印工作正常,但在更新到[Linux发行版的较新版本]之后,现在在将文件发送到打印提示和实际打印机之间有[5,10,15]秒的延迟开始打印。

在我的特殊情况下,在Ubuntu 8.04上立即开始打印,但升级到10.04后,延迟时间为10秒。我在Ubuntu Server上执行此操作,使用lpr命令进行打印,但问题也存在于10.04桌面上。从我读过的内容来看,它也影响了MOST linux发行版的新版本。 Fedora,OpenSUSE,Arch等

打印机都是网络打印机。从Windows打印也是即时的。打印机上的指示灯立即开始闪烁,但没有任何东西出现10-15秒。

Ubuntu 10.04使用CUPS 1.4.3。我认为这可能是CUPS中的一个错误,所以我编译了CUPS 1.4.5(最新的稳定版)来取代Ubuntu的1.4.3。但仍有延迟。

知道是什么原因造成的吗?或者解决问题的方法,找出导致问题的原因?


UPDATE:我将loglevel设置为debug并在我的日志中为单个作业获得大约660行输出。我发送的测试文件从添加到提示的时间到它出现时需要10秒。

我不会在这里发布所有内容(除非你真的想要它!),但这里是亮点:

这项工作受到了启发,同一时间发生了许多事情。这一秒的最后一行是:

D [28/Nov/2010:14:44:19 -0500]
   Discarding unused printer-state-changed event...

下一个日志行将在4秒后发生:

D [28/Nov/2010:14:44:23 -0500]
  [Job 3071] prtGeneralCurrentLocalization type is 0, expected 2!

因此,由于某些原因,我们有4秒的延迟。

1秒后,我们得到:

D [28 / Nov / 2010:14:44:23 -0500] PID 15448(/ usr / lib / cups / filter / pdftoraster)退出,没有错误。
D [28 / Nov / 2010:14:44:24 -0500] [工作3071]写了8192个字节的打印数据......
D [28 / Nov / 2010:14:44:24 -0500] [工作3071]读取8192字节的打印数据......
我[28 / Nov / 2010:14:44:24 -0500] [工作3071]打印第1页,57%完成...
我[28 / Nov / 2010:14:44:24 -0500] [工作3071]打印第1页,完成59%......
D [28 / Nov / 2010:14:44:24 -0500]丢弃未使用的工作进度事件......
D [28 / Nov / 2010:14:44:24 -0500]丢弃未使用的打印机状态更改事件...
我[28 / Nov / 2010:14:44:24 -0500] [工作3071]打印第1页,60%完成...

重复,直到:

我[28 / Nov / 2010:14:44:26 -0500] [工作3071]打印第1页,99%完成...
D [28 / Nov / 2010:14:44:26 -0500]丢弃未使用的工作进度事件......
D [28 / Nov / 2010:14:44:26 -0500]丢弃未使用的打印机状态更改事件...
我[28 / Nov / 2010:14:44:26 -0500] [工作3071]准备打印。

然后它继续:

D [28 / Nov / 2010:14:44:26 -0500] [工作3071]写了8192字节的打印数据......
D [28 / Nov / 2010:14:44:26 -0500] [工作3071]读取8192字节的打印数据......

一遍又一遍,直到:

D [28 / Nov / 2010:14:44:29 -0500] [工作3071]阅读3361字节的打印数据......
D [28 / Nov / 2010:14:44:29 -0500] [工作3071]写了3361字节的打印数据......
我[28 / Nov / 2010:14:44:29 -0500] [作业3071]发送打印文件,等待打印机完成...

哪个是打印机实际开始生成输出的点。整整10秒钟。


5
2017-11-28 18:00




如果同时排队两个作业,第二个作业是否还有10-15个等待?还是在第一次之后立刻出来? - pjz
每项工作都有延误。通过官方邮件列表上的一个CUPS开发者的评论,我已经成功减少了4秒钟。我将在下面发布他的答案。 - Nick


答案:


我经历了一些相同的事情。我不确定这是否与你的问题相同,但我们经历过,对于收据打印机,其中一些突然开始在打印时延迟4秒,而其他人则直接离开。

这是在Cups升级(Slackware linux)之后。

经过大量的调试,我们发现支持SNMP的打印机没有延迟,而不支持SNMP的打印机确实有延迟。

在升级之后,似乎杯子正在尝试通过SNMP从打印机获取信息,然后再发送实际的printjob。

我现在正在寻找一种方法来禁用此功能...如果找到解决方案,我会尝试回写。

我应该提一下,我们正在使用这些打印机的原始/套接字连接。我知道了 RedHat有一个关于此的报告错误,但我不允许查看它(BZ#709896)

我无法真正了解如何在Cups中禁用SNMP通信。 :\


3
2017-07-05 13:22



啊,我找到了解决问题的方法! cups.org/str.php?L3809  我们需要从Cups 1.4.6升级到至少Cups 1.4.7! - user127222


我建议在ubuntuforums中查看以下帖子,因为它们似乎也与打印机存在通信问题。

http://ubuntuforums.org/showthread.php?t=1101273

希望有所帮助, RayQuang


1
2017-12-14 13:28



我认为这是页面之间延迟的问题?我不能使用通用打印机,因为我的问题打印机是4x6热激光器。它将无法与通用.ppd一起正常工作。 - Nick


我对user127222有相同的经验。对于某些不支持SNMP的打印机,打印作业将延迟4秒。在CUPS中研究这些代码后:

  if ((ppd = ppdOpenFile(getenv("PPD"))) == NULL ||
      ((ppdattr = ppdFindAttr(ppd, "cupsSNMPSupplies", NULL)) != NULL &&
       ppdattr->value && _cups_strcasecmp(ppdattr->value, "true")))
  {
    ppdClose(ppd);
    return;
  }

我发现我可以通过更新该打印机的PPD文件来禁用这些SNMP请求。 使用:

*cupsSNMPSupplies: False

参考: CUPS PPD扩展


1
2018-03-11 04:01