en-US/about_Mgx_Tuning.help.txt
|
TOPIC about_Mgx_Tuning SHORT DESCRIPTION Default settings, hard ceilings, and tuning guidance for large tenants. LONG DESCRIPTION Mgx ships with conservative defaults to prevent accidental self-DoS against your tenant. Every tunable has a hard ceiling enforced at the property level -- invalid values throw rather than silently apply. Use Set-MgxOption to change settings at runtime. Only explicitly passed parameters are modified; all others retain their current values. Use Set-MgxOption -Reset to restore all defaults. CLIENT-SIDE RATE LIMITING (ON BY DEFAULT) Setting Default Hard Max Purpose ------- ------- -------- ------- RateLimitBurst 200 10,000 Token bucket burst capacity RateLimitPerSecond 50 10,000 Sustained request rate RateLimitQueueLimit 500 100,000 Queued requests before rejection Disable explicitly with Set-MgxOption -NoRateLimit. RETRY BUDGET CAPS Setting Default Hard Max Purpose ------- ------- -------- ------- MaxRetryAttempts 7 50 Retries per request MaxRetryAfterSeconds 120s 600s Caps server Retry-After delays TotalTimeoutSeconds 300s 3,600s Total time across all retries AttemptTimeoutSeconds 30s 300s Per-request timeout CIRCUIT BREAKER Setting Default Hard Max Purpose ------- ------- -------- ------- CircuitBreakerFailureRatio 10% 100% Failure ratio to trip CircuitBreakerMinThroughput 40 1,000 Min requests before evaluating CircuitBreakerSamplingDurationSeconds 30s 300s Evaluation window CircuitBreakerDurationSeconds 15s 300s Open-state duration Trips on 500/502/503/504 (server errors). Does NOT trip on 429 -- that is expected throttling, not failure. BATCH CONSTRAINTS Setting Default Hard Max Purpose ------- ------- -------- ------- BatchChunkConcurrency 1 10 Concurrent batch chunks BatchItemsPerSecond 20 1,000 Inter-chunk pacing (items/sec) Batch size 20 20 Items per /$batch POST (Graph limit) Per-item retries 3 3 Retries for failed items in a batch Sequential chunk execution (default) paces at 20 items/sec to stay under Graph's write throttle ceiling. POST SAFETY Non-idempotent methods (POST) only retry on 429 -- not on 5xx. A 500 on POST may mean the request was partially processed; blindly retrying could create duplicates. LARGE TENANT CONFIGURATION Default settings are tuned for tenants up to ~10k objects. Larger tenants should adjust timeouts, rate limits, and batch pacing. Observed throughput (v1.0.1, live tenant): Operation Objects Throughput Notes --------- ------- ---------- ----- User creation (batch POST) 25,000 20 items/sec Zero 429s with default pacing User enumerate (-All) 47,000 2,653/sec Streaming pagination Batch GET Mixed 107/sec Default settings 50k+ tenants (read-heavy): Set-MgxOption -TotalTimeoutSeconds 600 ` -AttemptTimeoutSeconds 60 ` -RateLimitBurst 300 ` -RateLimitQueueLimit 2000 TotalTimeoutSeconds 300 -> 600 Full enumeration takes > 5 min AttemptTimeoutSeconds 30 -> 60 Large pages can exceed 30s RateLimitBurst 200 -> 300 Absorbs pagination spikes RateLimitQueueLimit 500 -> 2,000 Fan-out queues more requests 100k+ write operations: Set-MgxOption -BatchItemsPerSecond 15 ` -TotalTimeoutSeconds 3600 ` -AttemptTimeoutSeconds 180 BatchItemsPerSecond 20 -> 15 Stay under write throttle TotalTimeoutSeconds 300 -> 3,600 100k writes takes ~110 min AttemptTimeoutSeconds 30 -> 180 Batch POST slows under load SEE ALSO Set-MgxOption Get-MgxOption Get-MgxTelemetry about_Mgx |