Printing delay

Kurt Pfeifle kurt.pfeifle at infotec.com
Mon Jul 2 16:53:29 PDT 2007


> All clients are setup to browsepoll the servers. And no NFS holds.

How many clients altogether ?!

BrowsePoll may be putting some heavy load on a server, if the number of clients is more than a couple of handfull. At least in CUPS 1.1.x that was certainly the case (dunno what some of the new improvements in 1.2.x may have achieved here). Of course, this also depends on BrowseInterval settings on the respective clients...

Certainly, with "browse push" from the server side (that is, "Browsing On" + "BrowseAddress @LOCAL") you should be able to take away some of the server load.

If your network setup does not allow for Browsing by all clients, you maybe can use the same effect by combining BrowsePoll by a few clients with BrowseRelay?

> cuspd.conf(servers):
>
> ServerName server1
> LogLevel debug

LogLevel debug increases the work for the server compared to LogLevel info....

> AccessLog /var/log/cups/access_log
> ErrorLog /var/log/cups/error_log
> PageLog /var/log/page_log
> MaxLogSize 20M
> MaxJobs 2000

With more than 2000 printqueues your MaxJobs 2000 setting is already less than 1 job per queue on avarage.

What is you typical concurrent jobs figure ("lpstat -o"), and what is happing at peak printing hours?

[To find out, you could do something like running:

  while true; do \
              echo -n "$(date):  " ; \
              lpstat -o \
              | wc -l \
              | tee -a /tmp/concurrent_cupsjobs.log ; \
              sleep 300 ; \
  done

for 24 hours, which gives you a line of a jobload snapshot every 5 minutes...]

MaxJobs is also the setting that influences what is kept in the job history. So if you typically don't have more than 100 concurrent jobs at any one time (including peak times), you may be able to bring down the strain to the server by using MaxJobs 200.

> MaxPrinterHistory 20

I don't know this setting; first time I hear about it (if it exists).

I only know MaxClients, MaxClientsPerHost, MaxJobs, MaxJobsPerPrinter and MaxJobsPerUser.

Did you mean to use MaxJobsPerPrinter?

>            #   on username/password.
> User lp
> Group cups
> MaxClients 2048
> MaxClientsPerHost 1024
> RIPCache 512m

AFAIK, RIPCache is *per filter process*; but I'm not really sure now. Maybe someone who is can correct me if I'm wrong?

Are you *really* having such large jobs that require 512 MB of RIPCache? (it should not do much harm though, because normally CUPS should utilize this maximum only if it needs it for any single filter process...)

> SystemGroup lp
> Listen 631
> Browsing On
> BrowsePort 631
> BrowseProtocols cups
> BrowseInterval 300
> BrowseTimeout 14400

Oh, so you have "browse push" as well as BrowsePoll by the clients??

If your server does a degree of processing jobs and queries originating from localhost, you may be able to bring down respective response times by adding a unix domain socket for local IPP communictions (simply add a line "Listen /a/path/to/a/file.sock").

----

That said, I don't think it is all that bad to get 2600+ printers listed by the CUPS server within 10 seconds by running a query from a remote client....







More information about the cups mailing list