Comment 1 for bug 1831021

Revision history for this message
Dariusz Gadomski (dgadomski) wrote :

After some analysis I believe the very high default value of LogDebugHistory (99999) is to blame for this (attaching massif report from the test case).

With a high number of jobs it's very easy to get hunderds-thousands of messages in LogDebugHistory which in turn will lead to enormous memory consumption, e.g.
40000 jobs * 2000 lines * (16 bytes for cupsd_joblog_t structure + 50-60 chars per message on average) - 5.66 GB.

After setting LogDebugHistory to 0 the memory consumption never exceeded 300 MB in my tests under the same heavy load. That's a very significant difference.

The possible workarounds:
1. Decrease LogDebugHistory to a low value (even to 0, upstream it's set to 200 by default).
2. Change LogLevel to debug (it will slow down cupsd operation significantly, but at the price of lower memory consumption as the LogDebugHistory is unused).
3. Make sure jobs are cleaned periodically by setting e.g. PreserveJobHistory 300.

I am wondering what was the rationale behind increasing LogDebugHistory to such a high value.