Skip to content

mosi1910/web-performance-engineering-load-testing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

⚙️ Web Application Performance Engineering & Load Testing

📌 Overview

This project presents a structured performance evaluation of a social network web application, focusing on load analysis, stress behavior, long-duration stability, and function-level profiling.

The primary objectives were:

  • Evaluate system behavior under concurrent user load
  • Identify performance bottlenecks using profiling tools
  • Perform Load, Stress, and Soak testing
  • Analyze execution cost at function level
  • Compare results between different load testing tools

🛠 Tools & Technologies

Profiling & Analysis

  • Xdebug – PHP profiling extension for execution tracing
  • KCacheGrind – Visualization tool for call graphs and performance metrics

Load Testing

  • Locust – Python-based distributed load testing framework
  • Apache JMeter – Java-based performance testing tool

🧪 Testing Methodology

1️⃣ Load Testing

  • Target: 1000 concurrent users
  • Spawn rate: 10 users/second
  • Sustained load for several minutes
  • Metrics evaluated:
    • Average response time
    • Throughput
    • Failure rate
    • Request latency distribution

2️⃣ Stress Testing

Incremental user increase to determine:

  • Maximum sustainable capacity
  • Performance degradation threshold
  • Service disruption point

Defined threshold example:

Dashboard response time exceeding 60 seconds.

Analysis focused on identifying the precise breaking point and failure patterns.


3️⃣ Soak Testing

Long-duration execution under steady load to evaluate:

  • Stability over time
  • Memory leaks
  • Resource exhaustion
  • Gradual performance degradation

🎯 Scenario Design

A high-load dashboard page was selected due to:

  • Multiple database queries
  • Mixed GET and POST requests
  • Dynamic content rendering
  • Heavy user interaction

Five user-behavior scenarios were implemented, including:

  • Login → dashboard access
  • Viewing posts and loading comments
  • Like/comment interactions
  • Mixed GET/POST sequences
  • Multi-request workflows

Weighted task execution was applied to simulate realistic traffic distribution.


🔎 Profiling Analysis

Using Xdebug output imported into KCacheGrind:

  • Top three highest self-time functions were identified
  • Callee map analysis performed
  • Call graph traversal analyzed
  • Bottleneck root causes investigated

Observed performance issues included:

  • Expensive database operations
  • Repeated function invocation chains
  • Inefficient query handling
  • High include-time overhead

Optimization strategies were proposed accordingly.


🔄 Tool Comparison: Locust vs Apache JMeter

Identical load conditions were replicated across both tools.

Similarities

  • Comparable response time trends
  • Similar throughput patterns
  • Matching failure thresholds

Differences

  • Threading and execution model
  • Resource consumption characteristics
  • Reporting capabilities
  • Configuration complexity

A structured comparative analysis is provided in the full report.


📊 Key Outcomes

  • Identified system bottlenecks under high concurrency
  • Determined service threshold limits
  • Conducted empirical comparison of load testing tools
  • Applied profiling-driven performance analysis workflow

⚠️ Note

This repository contains the complete analytical and experimental documentation of the project phase. Testing scripts and execution environments were originally developed locally.

About

Performance evaluation and profiling of a social network web application using Xdebug, KCacheGrind, Locust, and Apache JMeter. Includes load, stress, and soak testing analysis with bottleneck identification.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors