Mod_perl performanceAfter doing some reading on mod_perl it appears the default apache2 setting MaxRequestsPerChild is set to 0 which means it will never terminate the child process and eventually you will run out of memory. From the mod_perl performance tuning docs http://perl.apache.org/docs/1.0/guide/performance.html#Preventing_Your_Processes_from_Growing they recommend setting limits to deal with shared memory that as it is used becomes dirty and begins to consume more and more memory. With the MaxRequestPerChild = 0 as the default at some point based on usage in gbrowse2 you will run out of memory. This appears to be the problem I was having where it was amplified because I was loading the gff3(s) and genomes into memory which made it fairly quick to fail. No magic number is given for MaxRequestPerChild as it depends on the application and the usage conditions. I first set it to 10 and that resulted in very slow performance but no memory usage. I next tried 100 and that gave good performance when using gbrowse2 with reasonable memory usage. I am currently trying 1000 to see how that impacts memory usage.