top of page

CRM application - PHP memory exhaustion

  • mooneya9
  • Mar 2, 2024
  • 2 min read

Updated: Jun 12

This case outlines a failure encountered in a CRM web application where weekly analytics reports consistently failed to generate while daily reports ran without issue. The contrast suggested a resource related constraint triggered only under heavier loads.


The application was deployed as a Docker container on AWS ECS (Elastic Container Service). Logs were readily accessible via AWS CloudWatch, and a targeted analysis quickly surfaced the root error: a PHP memory exhaustion failure occurring during the generation of weekly reports.


At first glance, the issue appeared to be a classic case of under-provisioned resources. Memory allocation to the ECS task was increased to accommodate the larger workload. However, even after scaling the container's memory limits, the same error persisted.


Drawing on prior experience with similar deployments, it was suspected that the application itself was not configured to recognise or utilise the increased memory. This is a common pitfall in containerised environments - provisioning more resources at the infrastructure level does not guarantee that the application layer will automatically leverage them.


Since formal documentation for the application was unavailable, a manual analysis of the Docker image and its startup routines was undertaken. This involved reviewing the container entry point and environment configurations to understand how the PHP runtime was being invoked. Eventually, the correct syntax and runtime flags were identified to explicitly raise the memory limits within the application process.


Once this adjustment was made, the application successfully generated the weekly analytics reports without memory issues. The resolution was completed within a few hours.


This case highlights the importance of marrying infrastructure knowledge with application-layer understanding. Troubleshooting containerised workloads often requires deep familiarity with both platform mechanics and runtime behaviours. Rapidly diagnosing and resolving issues like this comes from accumulated experience across diverse environments - an advantage when dealing with production incidents where time and precision matter.

 
 

Recent Posts

See All
RDS database slow - storage layer

In this case study we explore a problem where we tackled performance issues plaguing an enterprise application responsible for processing...

 
 
Random pod failures - zone affinity

This case involves a Kubernetes platform running on AWS, hosting a suite of microservices that had been deployed over a year earlier by a...

 
 
bottom of page