You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 90f16a3
Browse filesBrowse the repository at this point in the historyBrowse files
<p>The application runs as a Spring Boot 3.3 application with embedded Tomcat, STOMP over WebSocket for real-time metrics, and in-memory state. A dedicated probe service measures request latency by probing the app through Azure's frontend.</p>
278
-
279
-
<h3>Key Components</h3>
280
-
<ul>
281
-
<li><strong>Spring Boot Application</strong> — Embedded Tomcat server with REST controllers and WebSocket support</li>
282
-
<li><strong>Probe Service</strong> — Background scheduled task that measures request latency by sending HTTP probes through the Azure frontend</li>
283
-
<li><strong>Simulation Services</strong> — CPU stress, memory pressure, and thread blocking simulations run in dedicated thread pools to avoid starving the servlet threads</li>
284
-
<li><strong>WebSocket Broker</strong> — STOMP messaging via SockJS for real-time dashboard updates (metrics, events, simulation status)</li>
@@ -604,14 +545,201 @@ <h4>💥 Out of Memory (OOM)</h4>
604
545
<li>Heap dump collection configuration</li>
605
546
</ul>
606
547
</section>
548
+
549
+
<sectionid="optional-config" class="card">
550
+
<h2>Optional Configuration</h2>
551
+
<p>You can customize the application behavior using Azure App Service environment variables.</p>
552
+
553
+
<h3>Health Probe Rate</h3>
554
+
<p>Control how often the server sends health probes to measure request latency. All probes are routed through the Azure frontend to capture realistic end-to-end latency.</p>
555
+
556
+
<h4>Environment Variable</h4>
557
+
<table>
558
+
<thead>
559
+
<tr>
560
+
<th>Variable Name</th>
561
+
<th>Description</th>
562
+
<th>Default</th>
563
+
</tr>
564
+
</thead>
565
+
<tbody>
566
+
<tr>
567
+
<td><code>HEALTH_PROBE_RATE</code></td>
568
+
<td>Probe interval in milliseconds. Minimum 100ms.</td>
569
+
<td><code>200</code></td>
570
+
</tr>
571
+
</tbody>
572
+
</table>
573
+
574
+
<h4>Setting via Azure CLI</h4>
575
+
<pre><code># Slow down probes if CLR profiler shows overlapping requests
576
+
az webapp config appsettings set --name $APP_NAME --resource-group $RESOURCE_GROUP \
577
+
--settings HEALTH_PROBE_RATE=400</code></pre>
578
+
579
+
<h3>Idle Timeout</h3>
580
+
<p>When the application is idle (no dashboard connections or load test requests), health probes are automatically suspended to reduce unnecessary network traffic to Azure's frontend and Application Insights telemetry.</p>
581
+
582
+
<h4>Environment Variable</h4>
583
+
<table>
584
+
<thead>
585
+
<tr>
586
+
<th>Variable Name</th>
587
+
<th>Description</th>
588
+
<th>Default</th>
589
+
</tr>
590
+
</thead>
591
+
<tbody>
592
+
<tr>
593
+
<td><code>IDLE_TIMEOUT_MINUTES</code></td>
594
+
<td>Minutes of inactivity before suspending health probes. Activity resumes automatically when the dashboard is opened or any request is received.</td>
595
+
<td><code>20</code></td>
596
+
</tr>
597
+
</tbody>
598
+
</table>
599
+
600
+
<h4>Setting via Azure CLI</h4>
601
+
<pre><code># Extend idle timeout to 30 minutes
602
+
az webapp config appsettings set --name $APP_NAME --resource-group $RESOURCE_GROUP \
603
+
--settings IDLE_TIMEOUT_MINUTES=30</code></pre>
604
+
605
+
<h3>Custom Page Footer</h3>
606
+
<p>Set a custom footer message that appears on all pages. The footer supports HTML, allowing you to include links.</p>
607
+
608
+
<h4>Environment Variable</h4>
609
+
<table>
610
+
<thead>
611
+
<tr>
612
+
<th>Variable Name</th>
613
+
<th>Description</th>
614
+
</tr>
615
+
</thead>
616
+
<tbody>
617
+
<tr>
618
+
<td><code>PAGE_FOOTER</code></td>
619
+
<td>HTML content for the footer's second line. If not set, only the app description and build info are shown.</td>
620
+
</tr>
621
+
</tbody>
622
+
</table>
623
+
624
+
<h4>Example Value</h4>
625
+
<pre><code>Created by <a href="https://yoursite.com">Your Team</a> for training purposes</code></pre>
626
+
627
+
<h4>Setting via Azure CLI</h4>
628
+
<pre><code># Set the footer via Azure CLI
629
+
az webapp config appsettings set --name $APP_NAME --resource-group $RESOURCE_GROUP \
630
+
--settings 'PAGE_FOOTER=Created by <a href="https://yoursite.com">Your Team</a> for training purposes'</code></pre>
631
+
632
+
<h4>Setting via Azure Portal</h4>
633
+
<ol>
634
+
<li>Navigate to your App Service in the Azure Portal</li>
635
+
<li>Go to <strong>Settings</strong> → <strong>Environment variables</strong></li>
636
+
<li>Click <strong>+ Add</strong></li>
637
+
<li>Set Name: <code>PAGE_FOOTER</code></li>
638
+
<li>Set Value: Your HTML footer content</li>
639
+
<li>Click <strong>Apply</strong>, then <strong>Confirm</strong></li>
640
+
</ol>
641
+
642
+
<h3>GitHub Repository Link</h3>
643
+
<p>By default, the GitHub Repository link in the sidebar menu is hidden. Set both environment variables below to display a link to your GitHub repository in the navigation menu.</p>
644
+
645
+
<h4>Environment Variables</h4>
646
+
<table>
647
+
<thead>
648
+
<tr>
649
+
<th>Variable Name</th>
650
+
<th>Description</th>
651
+
</tr>
652
+
</thead>
653
+
<tbody>
654
+
<tr>
655
+
<td><code>GITHUB_USER_NAME</code></td>
656
+
<td>The GitHub username or organization that owns the repository.</td>
657
+
</tr>
658
+
<tr>
659
+
<td><code>GITHUB_REPO_NAME</code></td>
660
+
<td>The name of the GitHub repository.</td>
661
+
</tr>
662
+
</tbody>
663
+
</table>
664
+
665
+
<h4>Example</h4>
666
+
<p>To link to <code>https://github.com/myorg/myrepo</code>, set:</p>
667
+
<ul>
668
+
<li><code>GITHUB_USER_NAME=myorg</code></li>
669
+
<li><code>GITHUB_REPO_NAME=myrepo</code></li>
670
+
</ul>
671
+
672
+
<h4>Setting via Azure CLI</h4>
673
+
<pre><code># Set the GitHub repository link
674
+
az webapp config appsettings set --name $APP_NAME --resource-group $RESOURCE_GROUP \
<p>The application runs as a Spring Boot 3.3 application with embedded Tomcat, STOMP over WebSocket for real-time metrics, and in-memory state. A dedicated probe service measures request latency by probing the app through Azure's frontend.</p>
681
+
682
+
<h3>Key Components</h3>
683
+
<ul>
684
+
<li><strong>Spring Boot Application</strong> — Embedded Tomcat server with REST controllers and WebSocket support</li>
685
+
<li><strong>Probe Service</strong> — Background scheduled task that measures request latency by sending HTTP probes through the Azure frontend</li>
686
+
<li><strong>Simulation Services</strong> — CPU stress, memory pressure, and thread blocking simulations run in dedicated thread pools to avoid starving the servlet threads</li>
687
+
<li><strong>WebSocket Broker</strong> — STOMP messaging via SockJS for real-time dashboard updates (metrics, events, simulation status)</li>
0 commit comments