I have had a long running memory leak on my on-line weewx system that I have finally managed to nail with what I think is a somewhat bizarre cause. Its a bit of a long story I am afraid...
My on-line system runs some some 20+ skins (some generating a single report only) and a multitude of search list extensions support these skins. The first time I noticed the issue was when weewx would stop producing output, weewx was still running but nothing was occurring (records being saved, reports being generated). I could stop weewx and start it again no problems and things wuld resume. The first time I gave it the benefit of the doubt. A couple of weeks later it happened again. A little investigation revealed that I was running out of memory. I use the cmon extension to monitor my system and I could see that weewx memory usage was a classic sawtooth, starting from a some value that I cannot remember now (this was well over a year ago) and gradually stepping up to a little under the 512 MB my (then) RPi had. I didn't have time to deal with the root cause (nor did I know how to find the root cause) so I lived with the issue. Some fairly frequent tweaking of my system tended to mask the issue as weewx was being restarted fairly regularly.
Move on a while and I replaced my RPi with an Odroid U3, the issue remained but at the Odroid has 2GB ram the time between lockups was greater. I now recorded some data; ram usage was increasing around 70-80 MB per day and I would generally get around 4 weeks between lockups. The ram usage would increase straight away after a weewx start and it would jump by around 3MB every hour or so. I upgraded from Debian Wheezy to Jessie and at first the issue disappered (I think) but it came back soon after. I had seen some posts about other users having a memory leak with PIL or pillow so I made sure it was up to date on my system. As I use Debian quite often the packages are some what behind the latest release so I forced Debian to use the latest package. Still no change. Given the number of skins and SLE I run I suspected that one of my skins or associated SLE was the source of the problem.
Step forward again to a couple of months back and I found some time to pare my system right back and gradually add 1 skin at a time. I eventually found the issue was caused by my Standard skin. My Standard skin is a modified version of the stock weewx Standard skin; I have moved some of the elements on the pages, have dropped the standard weewx plots in favour of Highcharts based plots, have added forecast output from the forecast extension as well as adding an 'alltime' page. So there were some substantial changes. I eventually tracked the issue down to a file that I was generating every hour using the forecast extension. Running the forecast extension with a 10 day WU forecast chews up a bit of time generating the resulting HTML. I use this forecast info on both my Saratoga PHP based site and my weewx site; they are somewhat different so for the Saratoga site I generate the forecast PHP page in its entirety and for the weewx page I generate a file forecast.incl that contains the forecast HTML. I generate these pages each hour considering the time to process and since the forecast info is slow changing. The forecast.incl file is used as an include in the weewx index.html.tmpl template that is generated every archive period. A convoluted arrangement that could no doubt be simplified. In any case, I found that if I stop generating the forecast.incl file the system memory was stable. So I restored everything else and left forecast.incl disabled and the system has been running fine since September, albeit without an updated forecast on my weewx page.
Yesterday I decided to sit down and nut out the issue. The template I use to generate forecast.incl is near identical to the stock forecast extension template forecast_table.inc.tmpl (I have added a couple of comments and dropped the verbatim CSS code from the stock template). The supporting SLE I use with this template is identical to the stock forecast extension SLE. So I replaced my forecast.incl.tmpl code with that from the forecast extension report, now the files were identical. The memory leak was evident immediately and was now around 3MB per archive period (rather than per hour) since I was generating this file every archive period. This was crazy I thought, I am using identical template and SLE code. I then noticed that the forecast extension generates a file forecast_table.inc but I was generating forecast.incl. So on the off chance I changed my template name from forecast.incl.tmpl to forecast_table.inc.tmpl. Memory leak disappeared. I changed to forecast.inc.tmpl, still no memory leak. I had to go but left it overnight, still no memory leak. This morning I changed to forecast.incl.tmpl again and the memory leak returned immediately. back to forecast.inc.tmpl and memory leak disappeared.
This seems bizarre, we have templates like index.html.tmpl that generate fine so the 4 letter extension seems to not be the issue per se. forecast.incl.tmpl generates fine but with a memory leak. I have been unable to get onto the cheetah site today to follow this up and see if cheetah has some sensitivity to .incl. I don't see how the forecast extension can be at fault, its just a template name that is being changed. I don't know if I have missed something obvious or not, but in any case long standing memory leak has disappeared and hopefully there will be no more scheduled restarts.
Gary