php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #80853 Apparent memory leak in PHP 8 not present in 7.4
Submitted: 2021-03-10 19:59 UTC Modified: 2021-03-17 10:01 UTC
From: zach at yembo dot ai Assigned:
Status: Open Package: Reproducible crash
PHP Version: 8.0.3 OS: Alpine Linux
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: zach at yembo dot ai
New email:
PHP Version: OS:

 

 [2021-03-10 19:59 UTC] zach at yembo dot ai
Description:
------------
Our product has an AWS SQS queue listener microservice that is an infinite loop that long polls SQS and processes messages as they come in. When using the php:7.4-fpm-alpine3.13 image from Docker Hub, the code runs indefinitely with no issues. However, when running the exact same application code using the php:8.0-fpm-alpine3.13 base image, we are seeing Kubernetes kill the pod due to exhausting the upper memory limit. 

We plotted the output of `kubectl top pods` over time, and found a long, slow climb over the course of 3-4 hours until the pod reaches the memory limit. Like many memory issues, I don't see any one smoking gun in the code. Since the 7.4 image works ok, I suspect there is a memory leak either introduced or exacerbated in PHP 8.

The codebase is fairly large and I'm not sure what particular area is causing the issue. Does anyone have ideas on how to pinpoint or where to look?

These links look generally related, but I'm not sure if there's any good way to tell if this is the same issue we are facing: 

1. https://phabricator.wikimedia.org/T247990
2. https://bugs.php.net/bug.php?id=79519


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2021-03-17 10:01 UTC] nikic@php.net
I'd usually run the program under "USE_ZEND_ALLOC=0 valgrind --tool=massif php" to get memory profile, but I'm not sure if that works well for this kind of long-running code.
 
PHP Copyright © 2001-2021 The PHP Group
All rights reserved.
Last updated: Tue May 18 09:01:24 2021 UTC