Help me understand these "PagePool size has exceeded max size" warnings

We recently changed our log level on the Application.log file to be “INFO” instead of “ERROR”. I believe this makes sense because when we do things like <cflog text="The process is done"/>, that is an INFO message and we want to see those.

But there has been some additional noise in the application.log lately, and I think it’s related to the loglevel change. I’d like to understand if what I am seeing in the log is a problem and what I should do about it. And why I can’t correlate that number (1551 or even 1000) when running PagePoolList().

The new-to-me log lines are, for example:

"INFO","Thread-1239792","02/17/2023","12:16:45","lucee.runtime.PageSourcePool","PagePool size [1551] has exceeded max size [1000]. Clearing unused..."
"INFO","Thread-1239792","02/17/2023","12:16:45","lucee.runtime.PageSourcePool","New pagePool size [1551]."
"INFO","Thread-1239900","02/17/2023","12:17:45","lucee.runtime.PageSourcePool","PagePool size [1551] has exceeded max size [1000]. Clearing unused..."
"INFO","Thread-1239900","02/17/2023","12:17:45","lucee.runtime.PageSourcePool","New pagePool size [1551]."
"INFO","Thread-1240065","02/17/2023","12:18:46","lucee.runtime.PageSourcePool","PagePool size [1551] has exceeded max size [1000]. Clearing unused..."
"INFO","Thread-1240065","02/17/2023","12:18:46","lucee.runtime.PageSourcePool","New pagePool size [1551]."
"INFO","Thread-1240180","02/17/2023","12:19:45","lucee.runtime.PageSourcePool","PagePool size [1556] has exceeded max size [1000]. Clearing unused..."
"INFO","Thread-1240180","02/17/2023","12:19:45","lucee.runtime.PageSourcePool","New pagePool size [1556]."
"INFO","Thread-1240335","02/17/2023","12:20:45","lucee.runtime.PageSourcePool","PagePool size [1556] has exceeded max size [1000]. Clearing unused..."
"INFO","Thread-1240335","02/17/2023","12:20:45","lucee.runtime.PageSourcePool","New pagePool size [1556]."

First of all the application name (lucee.runtime.PageSourcePool) must be something internal, we don’t have anything named like that obviously.

I wanted to get a sense for what was in this overflowing page pool, so I ran <cfdump var="#PagePoolList()#"/>, but the count on that array is always around 800-900. Not the 1556 number shown in the logs.

But then I realized that my dump code above was using my app’s application name, so maybe it’s showing me a different list than than what the log entry is referring to. So I created a new directory with a new application.cfc file and gave it an application name of “lucee.runtime.PageSourcePool” and ran the same getPagePool dump code. That dumps out around 450 files in the page pool. The names of those files are files from my codebase, although obviously some are missing because my other dump of getPagePool using my own application name results in a dump of 800-900 files.

Can someone help me understand what is going on? Which page pool is overflowing past 1000 entries?

And if it is of no consequence - then should a change be made to turn off this logging? Maybe it should only show up with a more verbose log level?

Thanks.

OS: Windows 2019
Java Version: 11.0.18
Tomcat Version: 9.0.71
Lucee Version: 5.3.10.120

The page pool is a memory pool used by Lucee Server to store compiled cfm pages. Throw more memory at it :slight_smile:

No, memory will not fix this. Lucee has a hard coded limit of 1000 items in the pagepool cache for … reasons. It cannot be changed. All you can do is adjust your logging levels to hide the warnings.

As to why the output of the pagePoolList() BIF returns a smaller number, that’s a great question, but Im tempted to say there may be more than one pool. You’d have to dig into the source code to compare that pool that BIF is looking at compared to the controller thread, which logs that warning…

Ideally, you’d be allowed to configure the limit like Adobe has had forever. Here’s some related links

https://luceeserver.atlassian.net/browse/LDEV-2418
https://lucee.daemonite.io/t/pagepool-1191-1000/5562

1 Like