Overview
This article describes performance optimisation techniques for a Turbo360 private hosting instance. It covers App Service Plan sizing, SQL database tier selection, autoscale configuration, Application Insights performance monitoring, and common patterns that degrade performance over time. Apply these recommendations to maintain consistent response times as your user count, monitored subscription count, or data volumes grow.
Business value
Right-sizing and tuning your Turbo360 infrastructure prevents the two most common performance failure modes — under-provisioned compute causing slow response times and query timeouts, and over-provisioned infrastructure driving unnecessary Azure spend. Proactive performance management also reduces the likelihood of performance degradation surfacing as false-positive monitoring alerts.
Prerequisites
- Contributor access to the Turbo360 resource group in the Azure portal
- Access to Application Insights for the Turbo360 instance
- Familiarity with Azure App Service and Azure SQL scaling options
Required permissions
| Task | Required role |
|---|---|
| Scale App Service Plan | Contributor on resource group |
| Change SQL service tier | SQL Server Contributor or Contributor |
| Configure autoscale | Contributor on resource group |
| View Application Insights | Reader (monitoring data only) |
How it works
Turbo360 performance is primarily determined by three resource tiers:
- App Service Plan — controls CPU and memory available to the Web App and Function Apps
- SQL Database — controls query throughput (DTUs) and storage I/O
- Storage Account — generally not a bottleneck; performance depends on the redundancy tier and blob operation frequency
Under normal load, the Web App serves user interface requests and the processor Function App handles background monitoring cycles, cost import jobs, and alert evaluations. SQL is the primary performance bottleneck for large deployments with many monitored subscriptions or high monitoring frequency.
Configuration
App Service Plan sizing
| Workload size | Recommended plan | Notes |
|---|---|---|
| Up to 10 users, up to 5 subscriptions monitored | Standard S2 or Premium P1v3 | Suitable for evaluation or small production |
| 10–50 users, 5–20 subscriptions | Premium P1v3 | Recommended baseline for production |
| 50–100 users, 20–50 subscriptions | Premium P2v3 | Required for consistent sub-3s response times at this scale |
| 100+ users or 50+ subscriptions | Premium P3v3 or higher | Contact Turbo360 support for capacity planning |
Scale up the App Service Plan when you observe:
- Web App response times consistently above 5 seconds
- Function App processing falling behind schedule (monitoring cycles not completing within the cycle interval)
- Application Insights showing CPU or memory pressure on Function App instances
SQL database tier sizing
| Workload size | Recommended tier | Notes |
|---|---|---|
| Evaluation or small production | Standard S2 (50 DTUs) | Minimum supported tier |
| Standard production | Standard S3 (100 DTUs) or S4 (200 DTUs) | Suitable for most deployments |
| High-volume production | Premium P1 (125 DTUs) or higher | Required when query times exceed 2s |
| BAM push model with high event volume | Premium P2 (250 DTUs) or higher | BAM ingestion generates higher write load |
Scale up the SQL tier when you observe:
- SQL DTU consumption consistently above 80% (visible in Azure portal SQL metrics)
- Query timeouts in Application Insights exceptions
- Slow load times on Cost Analyzer analysis views or BAM transaction history
Autoscale configuration
Configure autoscale on the App Service Plan to handle variable load without manual intervention.
- In the Azure portal, navigate to the App Service Plan.
- Select Scale out (App Service plan) under Settings.
- Switch from Manual scale to Custom autoscale.
- Add a scale-out rule: trigger on CPU Percentage > 70% for 5 minutes; increase instance count by 1.
- Add a scale-in rule: trigger on CPU Percentage < 30% for 10 minutes; decrease instance count by 1.
- Set minimum instances to 2 (or 3 if zone redundancy is enabled) and maximum instances based on your budget.
- Click Save.
Autoscale adds and removes Web App and Function App instances. Scale-out events add capacity within 2–5 minutes. For workloads with sudden spikes (large cost import jobs, BAM burst events), pre-warm instances manually before the expected spike if autoscale latency is a concern.
Application Insights performance monitoring
Use Application Insights to identify slow requests and bottlenecks before they affect users.
Key metrics to monitor:
| Metric | Location | Alert threshold |
|---|---|---|
| Server response time | Application Insights > Performance | > 5s for P95 |
| Failed requests | Application Insights > Failures | > 1% error rate |
| CPU percentage | App Service Plan > Metrics | > 80% sustained |
| SQL DTU consumption | SQL database > Metrics | > 80% sustained |
| Function App execution count | Function App > Metrics | Drop to zero indicates a stuck processor |
To create a performance alert:
- In the Azure portal, navigate to Application Insights.
- Select Alerts > + New alert rule.
- Add a condition (for example, Server response time > 5 seconds).
- Configure an action group to notify via email or Teams.
- Save the alert rule.
SQL index maintenance
Over time, SQL index fragmentation can degrade query performance. Azure SQL performs automatic index maintenance by default, but fragmentation may still accumulate for high-write workloads such as BAM push model deployments.
Run the following query in the Azure portal Query Editor or SQL Server Management Studio (SSMS) to check index fragmentation:
SELECT
OBJECT_NAME(ips.object_id) AS TableName,
i.name AS IndexName,
ips.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'LIMITED') ips
JOIN sys.indexes i ON ips.object_id = i.object_id AND ips.index_id = i.index_id
WHERE ips.avg_fragmentation_in_percent > 30
ORDER BY ips.avg_fragmentation_in_percent DESC;
If fragmentation exceeds 30% on tables with high query frequency, rebuild or reorganise the affected indexes. Contact Turbo360 support before running index maintenance on Turbo360 tables.
Example scenario
A platform engineer notices that Cost Analyzer analysis views are taking 8–10 seconds to load for a deployment with 30 monitored subscriptions and 60 active users. Application Insights shows SQL query duration averaging 4 seconds and DTU consumption at 85%. They scale the SQL database from Standard S2 to Standard S4, reducing query duration to under 1 second. They also configure autoscale on the App Service Plan (minimum 2, maximum 4 instances, trigger at 70% CPU) to handle load spikes during morning peak usage. Response times drop to under 2 seconds.
Limitations
- Scaling up the SQL database causes a brief connection interruption (typically under 30 seconds) while the tier change is applied.
- Autoscale adds new App Service instances within 2–5 minutes. Sudden load spikes may cause degraded performance during scale-out.
- Standard tier SQL does not support zone redundancy. Scaling to Premium for performance may also be required to enable zone redundancy.
- Index maintenance on Turbo360 SQL tables should only be performed under guidance from Turbo360 support to avoid disrupting table schemas or application behaviour.
- Application Insights sampling may suppress high-frequency telemetry. Adjust the sampling rate if you need full request telemetry for performance diagnosis.
Troubleshooting
-
Web App response times are slow despite a recent scale-up
Cause: The scale-up change has not yet taken effect, or the bottleneck is in SQL rather than App Service compute.
Fix: Confirm the App Service Plan tier change is applied in the Azure portal. Check SQL DTU metrics — if DTU consumption is high, scale up the SQL tier rather than the App Service Plan. -
Function App monitoring cycles are not completing on schedule
Cause: The processor Function App is resource-constrained or encountering repeated exceptions.
Fix: Review Application Insights for Function App failures and duration metrics. Scale up the App Service Plan and check for exception patterns in the Failures blade. -
Autoscale is not triggering despite high CPU
Cause: The autoscale rule cooldown period is preventing rapid scale-out, or the CPU threshold is set too high.
Fix: Review the autoscale settings and reduce the CPU threshold or cooldown period. Verify the autoscale rule is saved and active. -
SQL query times are high even after scaling up the tier
Cause: Index fragmentation or table statistics are stale on high-write Turbo360 tables.
Fix: Contact Turbo360 support to evaluate whether index maintenance or statistics updates are appropriate for the affected tables. -
Application Insights shows no data
Cause: Application Insights connection string is missing or invalid in the App Service configuration.
Fix: In the Azure portal, navigate to App Service > Configuration and verify thatAPPLICATIONINSIGHTS_CONNECTION_STRINGis set to the correct Application Insights connection string. Restart the App Service after updating the setting.
FAQs
-
How do I know if Turbo360 performance issues are caused by my Azure resources or the application layer?
Use Application Insights to distinguish between server-side (SQL, compute) and client-side (browser, network) latency. High SQL query duration in the Performance blade points to a SQL tier or index issue. High server response time with low SQL duration points to App Service compute constraints. -
Can I reduce costs by scaling down the App Service Plan during off-hours?
Yes. Autoscale can be configured with scheduled profiles to scale down to fewer instances during off-peak hours (for example, nights and weekends) and scale back up before business hours. This reduces costs without manual intervention.