Bug #81585 [Com]: cached_chunks are not counted to real_size on shutdown

From: Date: Sat, 05 Feb 2022 11:50:30 +0000
Subject: Bug #81585 [Com]: cached_chunks are not counted to real_size on shutdown
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-239497@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=81585&edit=1

 ID:                 81585
 Comment by:         Nayanamtech9 at gmail dot com
 Reported by:        xtpd17 at gmail dot com
 Summary:            cached_chunks are not counted to real_size on
                     shutdown
 Status:             Closed
 Type:               Bug
 Package:            Scripting Engine problem
 Operating System:   *
 PHP Version:        7.4
 Assigned To:        cmb
 Block user comment: N
 Private report:     N

 New Comment:

Hi i am aman i am here to give you information about credit cards. 
<a href="https://anchor.fm/amangupta/">Credit
cards</a>


Previous Comments:
------------------------------------------------------------------------
[2021-12-10 11:27:07] git@php.net

Automatic comment on behalf of cmb69
Revision: https://github.com/php/php-src/commit/5675ebe649352ffa89754defd87019223b88b4e5
Log: Fix #81585: cached_chunks are not counted to real_size on shutdown

------------------------------------------------------------------------
[2021-12-09 14:37:47] cmb@php.net

The following pull request has been associated:

Patch Name: Fix #81585: cached_chunks are not counted to real_size on shutdown
On GitHub:  https://github.com/php/php-src/pull/7745
Patch:      https://github.com/php/php-src/pull/7745.patch

------------------------------------------------------------------------
[2021-12-07 14:28:15] cmb@php.net

The following pull request has been associated:

Patch Name: Fix #81585: Reused cached_chunks are not counted to heap size
On GitHub:  https://github.com/php/php-src/pull/7732
Patch:      https://github.com/php/php-src/pull/7732.patch

------------------------------------------------------------------------
[2021-12-07 14:21:58] cmb@php.net

Setting ThreadsPerChild 1 actually yields only 1 worker thread;
the other threads are ancilliary.

Anyhow, the problem is that we don't count reused cached_chunks
(i.e. those which are retained between requests) to the size of
the heap, so the memory stats are wrong, and the memory_limit is
not properly heeded.  The latter causes the reported memory leak,
because the script is trying to exploit that.

This is not particularly related to Windows and Apache, but
happens for all web environments, i.e. whenever a process or
thread serves multiple consecutive requests (and chunks are
cached).

------------------------------------------------------------------------
[2021-11-29 17:53:28] cmb@php.net

First, the fact that not all request memory is freed on shutdown,
is a deliberate design decisions[1].  The reasoning is that later
reallocation of the memory from the OS is expensive.

Second, the total amount of memory allocated (httpd_mb) can easily
exceed PHP's memory_limit for a multi-threaded environment such as
Apache mpm_winnt.  If I set ThreadsPerChild 1 (note there is only
one child for mpm_winnt), I still get four threads (might be a
hard coded limit).  Then the maximum amount of memory allocated is
about four times the memory_limit, so this doesn't look like a
bug.  However, the reported values for memory_get_usage() are not
what I would have expected; it seems that memory_get_usage(true)
reports the per thread values, but memory_get_usage(false) return
the process values.  I'll have a closer look.

[1] <https://github.com/php/php-src/blob/php-7.4.26/Zend/zend_alloc.c#L2264>

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=81585


--
Edit this bug report at https://bugs.php.net/bug.php?id=81585&edit=1


Thread (12 messages)

« previous php.bugs (#239497) next »