Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Zátěžové testování najde maximální počet dotazů za sekundu (QPS), které může agent Databricks Apps udržovat, než dojde ke snížení výkonu. Na této stránce se dozvíte, jak provést následující akce:
- Nasaďte napodobenou verzi agenta, která izoluje propustnost infrastruktury od latence LLM.
- Proveďte zátěžový test ramp-to-saturation pomocí Locust.
- Analýza výsledků pomocí interaktivního řídicího panelu
Pomocí dovednosti Clauda Code můžete postupovat podle cesty s asistencí umělé inteligence nebo můžete jednotlivé kroky nastavit ručně.
Požadavky
- Pracovní prostor Azure Databricks s povolenými aplikacemi Databricks.
- Aplikace agenta nasazená (nebo připravená k nasazení) v Databricks Apps pomocí sady OpenAI Agents SDK, LangGraph nebo vlastní architektury. Viz Vytvoření agenta AI a jeho nasazení v Databricks Apps.
- Rozhraní příkazového řádku Databricks je nainstalované a ověřené. Viz Instalaci nebo aktualizaci rozhraní příkazového řádku Databricks.
- Python 3.10+ se správcem balíčků
uv. - (Pro cestu s asistencí umělé inteligence) Clauda Code byla nainstalována.
- (Pro zátěžové testy delší než ~1 hodinu) Služební identita s přihlašovacími údaji M2M OAuth (
client_idaclient_secret). Viz Autorizace přístupu servisního principála k Azure Databricks pomocí OAuth.- Při krátkých zátěžových testech (méně než přibližně 1 hodinu) vaše stávající U2M OAuth přihlašovací údaje fungují správně
databricks auth login. V případě delších testů použijte M2M OAuth se služebním účtem – platnost tokenů U2M vyprší během dlouhých spuštění a způsobí selhání během testu. Vytvoření instančního objektu služby vyžaduje přístup správce pracovního prostoru.
- Při krátkých zátěžových testech (méně než přibližně 1 hodinu) vaše stávající U2M OAuth přihlašovací údaje fungují správně
Nastavení s asistencí umělé inteligence (doporučeno)
Pokud používáte Claude Code, /load-testing dovednost automatizuje pracovní postup. Načte kód vašeho agenta, vygeneruje napodobení, vytvoří skripty zátěžového testování a provede vás nasazením.
Tip
Řekněte Claudovi Code, aby to udělal za vás:
Clone https://github.com/databricks/app-templates and run the /load-testing skill against the {your-template} template.
Nebo postupujte podle následujících kroků.
Krok 1: Klonování šablony agenta
Dovednost /load-testing je součástí úložiště databricks/app-templates, jak jako dovednost nejvyšší úrovně agent-load-testing, tak i předem synchronizovaná do každé jednotlivé šablony agenta. Pokud už máte projekt od app-templates, už máte dovednost.
Naklonujte úložiště a přejděte do adresáře šablony pro agenta, kterého chcete zatížit testem.
git clone https://github.com/databricks/app-templates.git
cd app-templates/{your-template}
Krok 2: Spuštění schopnosti zátěžového testování
V Claudu Code spusťte:
/load-testing
Dovednost vás interaktivně provede následujícími kroky. Můžete přeskočit napodobování a otestovat skutečného agenta nebo přeskočit nasazení, pokud už vaše aplikace běží.
- Shromažďování parametrů: dotaz na stav nasazení, velikosti výpočetních prostředků, konfigurace pracovních procesů a přihlašovací údaje OAuth.
-
Vytváření skriptů zátěžového testu: vygeneruje
locustfile.pyrun_load_test.pyadashboard_template.pyna míru vašemu projektu. - Napodobení LLM: vytvoří předstíraného klienta specifického pro vaši sadu SDK (OpenAI Agents SDK, LangGraph nebo vlastní), který nahrazuje skutečná volání LLM konfigurovatelnými zpožděními streamování.
- Nasazení testovacích aplikací: provede vás nasazením více konfigurací aplikací s různými velikostmi výpočetních prostředků a počty pracovních procesů.
- Spouštění testů: Provádí zátěžový test s ověřováním M2M OAuth a postupným zvyšováním zátěže až do nasycení.
- Generování výsledků: vytvoří interaktivní řídicí panel HTML s metrikami QPS, latence a selhání.
Ruční nastavení
Pokud chcete nastavit a spustit zátěžové testy bez pomoci S AI, postupujte podle těchto kroků.
Krok 1: Napodobte volání LLM agenta (volitelné)
Tento krok přeskočte, pokud chcete mít kompletní výsledky, které zahrnují skutečnou latenci LLM. Pokud chcete měřit propustnost infrastruktury Databricks Apps izolovaně, napodobit LLM, aby se latence jednotlivých požadavků (obvykle 1–30 sekund) nestala kritickým bodem.
Mock vrací předem připravené odpovědi s konfigurovatelným zpožděním streamování, přičemž je zachován celý proces požadavků a odpovědí (SSE streamování, distribuce nástrojů, spouštěč SDK) a zamění se pouze LLM. Tím se zobrazí maximální počet QPS, který platforma Databricks Apps dokáže během zátěžových testů poskytovat a vyhnout se nákladům na token rozhraní API modelu Foundation.
Časování emulace je řízeno dvěma proměnnými prostředí:
| Variable | Default | Description |
|---|---|---|
MOCK_CHUNK_DELAY_MS |
10 |
Zpoždění v milisekundách mezi streamovanými textovými bloky |
MOCK_CHUNK_COUNT |
80 |
Počet bloků textu na odpověď |
Ve výchozím nastavení každá napodobená odpověď trvá přibližně 800 ms (10 ms x 80 bloků dat), výrazně rychleji než skutečná odpověď LLM (3–15 sekund). Čísla propustnosti pak odrážejí platformu, nikoli model.
Vytvořte napodobení klienta, který nahradí skutečného klienta LLM. Zbytek kódu agenta zůstane beze změny a přístup závisí na vaší sadě SDK. Informace o OpenAI naleznete v referenční implementacimock_openai_client.py v databricks/app-templates. Stejný vzor se přizpůsobí jiným sadám SDK.
OpenAI Agents SDK
Vytvořte agent_server/mock_openai_client.py — třídu MockAsyncOpenAI, která implementuje chat.completions.create() se streamováním. Vrátí bloky volání nástroje okamžitě (simuluje rozhodování LLM o volání nástroje) a bloky textových odpovědí s konfigurovatelným zpožděním od proměnných prostředí MOCK_CHUNK_DELAY_MS a MOCK_CHUNK_COUNT.
Prohoďte ho do svého agenta:
from agent_server.mock_openai_client import MockAsyncOpenAI
from agents import set_default_openai_client, set_default_openai_api
set_default_openai_client(MockAsyncOpenAI())
set_default_openai_api("chat_completions")
Zbytek kódu agenta (obslužné rutiny, nástroje, logika streamování) zůstane beze změny.
LangGraph
ChatDatabricks Nahraďte model napodobeným objektem, který vrací předdefinované AIMessage objekty:
# Before:
# model = ChatDatabricks(endpoint="databricks-claude-sonnet-4")
# After:
from agent_server.mock_llm import MockChatModel
model = MockChatModel()
Napodobení by se mělo vracet AIMessage objekty při použití nástrojových volání při prvním vyvolání a s textovým obsahem při následujících voláních, s konfigurovatelným zpožděním při streamování.
Vlastní agenti
Obalte veškerá externí API volání, která váš agent provádí (LLM, AI Search, API nástrojů), mock implementacemi, které vracejí realistickou strukturu odpovědí s konfigurovatelnými prodlevami.
Krok 2: Nastavení skriptů zátěžového testování
Vytvořte load-test-scripts/ adresář v projektu. Architektura zátěžového testování se skládá ze tří skriptů, které jsou nezávislé na architektuře a pracují s libovolným agentem Databricks Apps.
<project-root>/
agent_server/ # Your existing agent code
load-test-scripts/ # Load testing scripts (create this)
run_load_test.py # CLI orchestrator
locustfile.py # Locust test with SSE streaming + TTFT tracking
dashboard_template.py # Interactive HTML dashboard generator
load-test-runs/ # Results (auto-created per run)
<run-name>/
dashboard.html # Interactive dashboard
test_config.json # Test parameters for reproducibility
<label>/ # Per-config Locust CSV output
Architektura obsahuje následující soubory:
-
locustfile.py: Zátěžový test Locust, který odesíláPOST /invocationspožadavky pomocístream: true, rozebírá streamy SSE, sleduje čas prvního tokenu (TTFT) jako vlastní metriku, používá M2M OAuth výměnu tokenů s automatickým obnovením a implementuje metoduStepRampShape, která zvyšuje počet uživatelů zstep_sizenamax_usersa drží každou úroveň po dobustep_durationsekund. -
run_load_test.py: CLI orchestrátor, který postupně testuje každou URL aplikace s izolovanými metrikami pro každou konfiguraci. cs-CZ: Zpracovává aktualizaci tokenu OAuth, před každým testem spustí kontrolu stavu, vykoná přípravné činnosti a uloží výsledky doload-test-runs/<run-name>/<label>/. -
dashboard_template.py: Vygeneruje samostatný řídicí panel HTML pomocí Chart.js s kartami klíčových ukazatelů výkonu, pruhovými grafy (QPS, latence, TTFT podle konfigurace), spojnicovými grafy průběhu rampy QPS a kompletní tabulkou výsledků. Lze spustit samostatně:uv run dashboard_template.py ../load-test-runs/<run-name>/.
Nainstalujte závislosti
Skripty zátěžového testování používají své vlastní pyproject.toml uvnitř load-test-scripts/ , aby se zabránilo znečišťování produkčních závislostí vašeho agenta. Vytvořit load-test-scripts/pyproject.toml:
[project]
name = "load-test-scripts"
version = "0.1.0"
requires-python = ">=3.10"
dependencies = [
"locust>=2.32,<2.40",
"urllib3<2.3",
"requests",
]
Note
Připnout locust na <2.40. Novější verze (>=2.43) mají známé RecursionError, které způsobují přerušení dlouhých zátěžových testů.
Instalace z adresáře load-test-scripts/ :
cd load-test-scripts/
uv sync
Krok 3: Nasazení testovacích aplikací s různými konfiguracemi
Nasaďte několik aplikací Databricks s různými velikostmi výpočetních prostředků a počty pracovních procesů, abyste našli optimální konfiguraci pro vaši úlohu.
Doporučená testovací matice
Následující konfigurace se zaměřují na optimální bod zjištěný z předchozích testů. Pokud chcete širší pokrytí, přidejte jednu konfiguraci na obou stranách (například medium-w1 nebo large-w12), ale šest níže obvykle stačí.
| Vypočítat velikost | Pracovníci | Navrhovaný název aplikace |
|---|---|---|
| Medium | 2 | <your-app>-medium-w2 |
| Medium | 3 | <your-app>-medium-w3 |
| Medium | 4 | <your-app>-medium-w4 |
| Velké | 6 | <your-app>-large-w6 |
| Velké | 8 | <your-app>-large-w8 |
| Velké | 10 | <your-app>-large-w10 |
Konfigurace velikosti výpočetních prostředků
Pomocí rozhraní příkazového řádku Databricks můžete nastavit velikost výpočetních prostředků při vytváření nebo aktualizaci aplikace:
# Create a new app with Medium compute
databricks apps create <app-name> --compute-size MEDIUM
# Update an existing app to Large compute
databricks apps update <app-name> --compute-size LARGE
Konfigurace počtu pracovních procesů pomocí deklarativních automatizačních sad
start-server (prostřednictvím AgentServer.run()) --workers přijímá příznak přímo. V poli command pomocí proměnné DAB předat počet pracovníků.
variables:
app_name:
default: 'my-agent-medium-w2'
workers:
default: '2'
resources:
apps:
load_test_app:
name: ${var.app_name}
source_code_path: .
config:
command: ['uv', 'run', 'start-server', '--workers', '${var.workers}']
env:
- name: MOCK_CHUNK_DELAY_MS
value: '10'
- name: MOCK_CHUNK_COUNT
value: '80'
targets:
medium-w2:
default: true
variables:
app_name: 'my-agent-medium-w2'
workers: '2'
large-w8:
variables:
app_name: 'my-agent-large-w8'
workers: '8'
Nasazení a ověření
Nasaďte každý cíl pomocí rozhraní příkazového řádku Databricks:
databricks bundle deploy --target medium-w2
databricks bundle run load_test_app --target medium-w2
Před spuštěním zátěžových testů ověřte, že jsou aplikace aktivní:
databricks apps get <app-name> --output json | jq '{app_status, compute_status, url}'
Note
Než budete pokračovat, počkejte, až se všechny aplikace dostanou ke ACTIVE stavu. Aplikace, které jsou stále ve fázi spouštění, vytvářejí zavádějící výsledky.
Krok 4: Spuštění zátěžových testů
Nastavení ověřování
Vyberte autentizaci podle toho, jak dlouho plánujete spustit:
-
Krátké testy (méně než ~1 hodina): Použijte své stávající přihlašovací údaje uživatele z
databricks auth login. Nevyžaduje se žádné další nastavení. - Dlouhé testy (více než ~1 hodina, například celonoční běhy): Použijte M2M OAuth se služebním zástupcem. Platnost tokenů U2M vyprší a přeruší testování během jeho spuštění. Vytvoření instančního objektu služby vyžaduje přístup správce pracovního prostoru.
V případě použití M2M OAuth vyexportujte přihlašovací údaje aplikačního objektu před spuštěním testů.
export DATABRICKS_HOST=https://your-workspace.cloud.databricks.com
export DATABRICKS_CLIENT_ID=<your-client-id>
export DATABRICKS_CLIENT_SECRET=<your-client-secret>
Referenční informace k parametrům
| Parameter | Povinné | Default | Description |
|---|---|---|---|
--app-url |
Yes | — | Adresy URL aplikací pro testování (opakovatelné) |
--client-id |
Pro dlouhé testy |
DATABRICKS_CLIENT_ID Env |
ID klienta service principalu (M2M OAuth) |
--client-secret |
Pro dlouhé testy |
DATABRICKS_CLIENT_SECRET Env |
Tajný klíč klienta služebního principálu (M2M OAuth) |
--label |
No | Automaticky odvozené z adresy URL | Popisek čitelný pro člověka na aplikaci (opakovatelný) |
--compute-size |
No | Automaticky rozpoznané nebo medium |
Značka výpočetní velikosti pro aplikaci: medium, large (opakovatelný) |
--max-users |
No | 300 |
Maximální počet souběžných simulovaných uživatelů |
--step-size |
No | 20 |
Uživatelé přidaní za každý krok rampy |
--step-duration |
No | 30 |
Sekundy na krok rampy |
--spawn-rate |
No | 20 |
Rychlost uživatelských spawnů (uživatelé/s) |
--run-name |
No | <timestamp> |
Název tohoto spuštění – výsledky uložené do load-test-runs/<run-name>/ |
--dashboard |
No | Off | Generování interaktivního řídicího panelu HTML po dokončení testů |
Příklady příkazů
Rychlý test jednoaplikace (krátký test – používá vaší databricks auth login relaci):
cd load-test-scripts/
uv run run_load_test.py \
--app-url https://my-app.aws.databricksapps.com \
--dashboard --run-name quick-test
Úplná matice pro doporučených 6 konfigurací (dlouhodobý provoz — předání M2M přihlašovacích údajů). Předejte --compute-size příznaky ve stejném pořadí jako --app-url:
uv run run_load_test.py \
--app-url https://my-app-medium-w2.aws.databricksapps.com \
--app-url https://my-app-medium-w3.aws.databricksapps.com \
--app-url https://my-app-medium-w4.aws.databricksapps.com \
--app-url https://my-app-large-w6.aws.databricksapps.com \
--app-url https://my-app-large-w8.aws.databricksapps.com \
--app-url https://my-app-large-w10.aws.databricksapps.com \
--compute-size medium --compute-size medium --compute-size medium \
--compute-size large --compute-size large --compute-size large \
--client-id $DATABRICKS_CLIENT_ID \
--client-secret $DATABRICKS_CLIENT_SECRET \
--dashboard --run-name overnight-sweep
Více spuštění pro statistickou konzistenci:
for RUN in r1 r2 r3 r4 r5; do
uv run run_load_test.py \
--app-url https://my-app.aws.databricksapps.com \
--client-id $DATABRICKS_CLIENT_ID \
--client-secret $DATABRICKS_CLIENT_SECRET \
--max-users 1000 --step-size 20 --step-duration 10 \
--run-name my_test_${RUN} --dashboard || break
done
Co se stane během běhu
-
Kontrola stavu: Ověřuje správné fungování datových proudů aplikace (přijímá
[DONE]). - Warmup: odesílá sekvenční požadavky, které aplikaci zahřejí.
-
Ramp až do dosažení nasycení: zvyšuje počet souběžných uživatelů každých
step_durationsekund. - Detekce saturace: Když se QPS ustálí, i když přidáváte další uživatele, dosáhli jste limitu propustnosti.
Odhadovaná doba trvání
Každá aplikace pod testem prochází vlastní rampou, takže celková doba běhu se škáluje s počtem konfigurací v matici. Pomocí následujícího vzorce naplánujte okno spuštění.
Doba trvání na aplikaci: (max_users / step_size) * step_duration sekundy.
S výchozími nastaveními (--max-users 300 --step-size 20 --step-duration 30):
- 15 kroků x 30 sekund = přibližně 7,5 minuty na aplikaci
- Pro doporučenou 6-konfigurační matici: přibližně 45 minut na běh
Krok 5: Zobrazení a interpretace výsledků
Otevřete řídicí panel:
open load-test-runs/<run-name>/dashboard.html(Volitelné) Znovu vygenerujte řídicí panel z existujících dat, například po aktualizaci šablony:
cd load-test-scripts/ uv run dashboard_template.py ../load-test-runs/<run-name>/
Oddíly řídicího panelu
Interaktivní řídicí panel obsahuje:
- Karty klíčových ukazatelů výkonu: nejlepší konfigurace (podle vrcholu úspěšných QPS), celková špička QPS, nejnižší latence a celkový počet požadavků, které byly obslouženy.
- QPS by Config: seskupený pruhový graf zobrazující medián QPS, špičku QPS s vyloučením selhání a špičku QPS vedle sebe pro každou konfiguraci.
- Latence podle konfigurace: seskupené pruhy zobrazující latenci p50 a p95
- TTFT podle konfigurace: doba k prvnímu tokenu (p50 a p95).
- Celkový počet obsluhovaných požadavků: počet požadavků na jednu konfiguraci.
- Průběh rampy QPS: spojnicové grafy s kartami pro QPS, QPS (s výjimkou selhání), Latence a Selhání. Zahrnuje posuvník pro maximální počet uživatelů, který umožňuje přiblížení na nižší rozsahy souběžnosti. Grafy jsou seskupené podle velikosti výpočetních prostředků (střední a velké vedle sebe).
- Tabulka úplných výsledků: všechny konfigurace s QPS ve špičce, uživatelé ve špičce, percentily latence a míra selhání.
- Parametry testu: souhrn konfigurace pro reprodukovatelnost.
Jak interpretovat výsledky
- Špička QPS: maximální počet QPS dosažený v jakémkoli kroku rampy. Toto je strop propustnosti pro danou konfiguraci.
- Uživatelé ve špičce: počet souběžných uživatelů při dosažení špičky QPS. Přidání dalších uživatelů mimo tento bod nezvyšuje propustnost.
- Míra selhání: měla by být 0% nebo velmi nízká. Vysoká míra selhání znamená, že aplikace je na této úrovni souběžnosti přetížená.
- Graf nájezdu QPS: Vyhledejte místo, kde čára zploštěla. To je bod sytosti: Přidání dalších uživatelů nezvýší propustnost.
Řešení potíží
| Problém | Řešení |
|---|---|
| Platnost ověřovacího tokenu vypršela uprostřed testu | U testů delších než ~1 hodinu přepněte z U2M na M2M OAuth předáním --client-id a --client-secret |
| Kontrola zdraví selže | Ověřte, že je aplikace aktivní: databricks apps get <name> --output json |
| 0 QPS nebo žádné výsledky | Kontrola load-test-runs/<run-name>/<label>/locust_output.log chyb |
| Nízký počet QPS bez ohledu na vysoký počet uživatelů | Aplikace je nasycená. Zkuste použít více pracovních procesů nebo větší výpočetní prostředky. |
| Vysoká míra selhání | Aplikace je přetížená. Snižte nebo zvyšte --max-users počet pracovníků nebo výpočetní kapacitu. |
| Řídicí panel neobsahuje žádná data rampy. | Ověřte, že results_stats_history.csv existuje v každém podadresáři výsledků. |
Další zdroje informací
- Testování pomocí skutečných volání LLM: přeskočte krok napodobování a nasaďte skutečného agenta, abyste změřili kompletní latenci včetně doby odezvy LLM.
- Ladění počtu pracovních procesů: Pomocí výsledků testovací matice vyhledejte optimální počet pracovních procesů pro vaši velikost výpočetních prostředků.
- Kurz: Vyhodnocení a vylepšení aplikace GenAI pro měření přesnosti, relevance a bezpečnosti spolu s propustností
- Připravte svého agenta Databricks Apps pro produkční nasazení v rámci kompletního postupu přípravy na produkční nasazení, včetně AI Gateway.