As I said I was trying to get closer to your case.

# get some pictures
$ apt-get install ubuntu-wallpapers-zesty ubuntu-wallpapers-karmic 
ubuntu-wallpapers-lucid ubuntu-wallpapers-maverick ubuntu-wallpapers-natty 
ubuntu-wallpapers-oneiric ubuntu-wallpapers-precise ubuntu-wallpapers-quantal 
ubuntu-wallpapers-raring ubuntu-wallpapers-saucy ubuntu-wallpapers-trusty 
ubuntu-wallpapers-utopic ubuntu-wallpapers-vivid ubuntu-wallpapers-wily
$ mkdir /var/www/html/thumbs
$ chgrp www-data /var/www/html/thumbs
$ chmod g+w /var/www/html/thumbs

To process those in my case needed ~16 seconds.
So I duplicated the pictures 3 times

$ cd /usr/share/backgrounds
$ for i in *; do cp $i dup_1_$i; cp $i dup_2_$i; cp $i dup_3_$i; done

The code now is:
<?php
   header("Content-Type: text/plain");
   ini_set('max_execution_time', 30);

   $photos = [];
   if ($album_root = opendir("/usr/share/backgrounds")) {
     while (false !== ($entry = readdir($album_root))) {
       if (preg_match('/\.(jpe?g|gif|png)$/i', $entry)) {
         $photos[] = $entry;
       }
     }
     closedir($album_root);
     sort($photos);
     foreach($photos as $photo) {
       echo "Processing " . $photo . " at " . date('h:i:s') . "\n";
       $thumb = 'thumbs/'.$photo;
       if (!file_exists($thumb)) {
         $image = new \Imagick(realpath('/usr/share/backgrounds/'.$photo));
         $image->thumbnailImage(64, 48, true, false);
         $image->writeImage($thumb);
         $image->clear;
         $image = null;
       }
     }
   }

   echo "Leaking " . memory_get_usage() . "\n";
   #busy wait until killed, and consume execution time (so no sleep)
   $st_tm = time();
   $diff=0;
   while (1){
     if ((time() - $st_tm) > $diff) {
             $diff=(time() - $st_tm);
             echo "Waiting to Die " . date('h:i:s') . "\n";
             flush();
     }
   }
?>

With that it exceeds the 30 seconds just as it does in your case (needs ~40).
While running I see it changing memroy consumption between 80 and 120 MB.
But never exceeding as if some garbagde collection works as expected.

Many concurrent requests got my system stuttering via cpu consumption but 
nothing exceeded any memory limit.
So killed by max_execution_time while doing the same workload you have it never 
exceeded the 128M I had set.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1677578

Title:
  php-fcgi: max_execution_time causes memory leaks

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/php7.0/+bug/1677578/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to