Skip to main content

Why Memory Leaks Often Go Unnoticed Until Load Testing

Memory leaks can arise in various ways depending on how they are introduced, but they all exhibit a similar behavior, which ultimately makes them a performance issue.

To demonstrate, consider a simplified example involving a process. Imagine you're testing a function on a web server, where the process executes a computation and returns a result. During this, it requests a chunk of memory. However, due to a bug, the process mistakenly requests the same chunk twice. When the result is returned, it only releases one chunk, leaving the other unreleased.

Each time this function is called, the same issue occurs, and over time, the process consumes more of the host machine’s available memory, leading to a "memory leak." As this continues, the host system is impacted because the memory that should have been freed is never returned, causing the process to consume excessive resources until it either crashes or is forcefully terminated.

In my experience, these types of memory leaks are often uncovered during load testing. A function may return correct results and pass unit tests, which only evaluate a small number of cases. However, when this function is executed tens or hundreds of thousands of times, the memory issue becomes more evident, as it continuously reserves memory that is never released.

Identifying memory leaks is not always straightforward. There are valid scenarios where a process may reserve memory and not release it immediately. Unfortunately, it's not as simple as releasing every bit of memory as soon as it's used.


Although this is a simplified example, it reflects the typical pattern I associate with a memory leak: memory is allocated but not properly released, eventually leading to performance degradation.

Comments

Popular posts from this blog

Pacing Time in LoadRunner

What is Pacing? Where and why to use it? -Pacing is the time which will hold/pause the script before it goes to next iteration. i.e Once the   Action   iteration is completed the script will wait for the specific time(pacing time) before it starts the next one. It works between two actions. eg, if we record a script there will be three default actions generated by the Load Runner:   vuser_init, Action   and   vuser_end,   the pacing will work after the   Action   block and hold the script before it goes to repeat it. The default blocks generated by LoadRunner is shown below: Actions marked in Red Now we know what is pacing and we use it between two iteration. The next question comes to mind is why we use pacing: Pacing is used to: To control the number of TPS generated by an user. To control number of hits on a application under test.     Types of Pacing: There are three options to control the pac...

How CPU impacts the application performance?

The CPU (Central Processing Unit) plays a vital role in determining the performance of an application.  Here's how the CPU affects application performance: Processing Power: The CPU is responsible for executing instructions and performing calculations required by the application. A more powerful CPU with a higher clock speed and more cores can handle complex computations and process instructions faster, leading to improved application performance. Response Time: The CPU speed directly influences the response time of an application. A faster CPU can execute instructions more quickly, resulting in reduced response times and faster application performance. Multitasking and Parallel Processing: Modern CPUs with multiple cores allow for the concurrent execution of tasks, enabling better multitasking and parallel processing. This can significantly enhance the performance of applications that can effectively utilize multiple threads or processes. Bottlenecks: CPU bottlenecks can occur whe...

What is Performance Testing and why it is important?

We spend most of our time by browsing Facebook, watching videos, uploading photos and many other online activities. Have you ever noticed if you are watching a video and all of sudden the website goes down? If you are trying to book an online ticket and on the payment page, the website stops responding? If you are adding the last available item on sale in the shopping cart and the website gets hung? Isn't it stressful? For every growing business, it's very crucial to keep a tap on the performance of their application. If a website takes more than 2 seconds to respond then users tend to move to some other website which can cause a huge business loss.  Let's say you are on a retail website and browsing for some item that takes around 2-3 seconds to respond to each click or loading the page. In most cases, the user will go for some other website. Performance Testing gives an idea about how the system is going to behave on load and can help the business owners to ...