Sistem gereksinimleri: hangi yük için ne kadar makine
Spitfire'ı kendi sunucunuza kurmadan önce ne kadar CPU, bellek ve disk ayırmanız gerektiğini bu sayfa söyler: tek makinede Docker ile, Kubernetes'te ve yükü başka makinelere dağıtırken. Sayılar beklediğiniz sanal kullanıcı (VU) sayısına ve saniyedeki istek sayısına göre verilmiştir.
Yazılım
- Tek makine: Linux (amd64 ya da arm64) ya da macOS, Docker Engine ya da Docker Desktop ve Docker Compose v2. Windows 10/11 ve Windows Server'da Docker Desktop (Linux konteynerleri) ve PowerShell.
- Kubernetes:
kubectlve bir namespace'e kurulum yetkisi; kalıcı disk için bir StorageClass (Postgres'i dışarıda tutmuyorsanız). Helm chart'ı da vardır. - Uzak runner sunucusu: Docker; ya da Docker'sız Linux'ta systemd, Docker'sız Windows'ta Windows hizmeti.
- Veritabanı: kurulumla gelen Postgres 16 ya da kendi Postgres'iniz.
- Portlar: web arayüzü ve API için 8470; başka makinelerdeki runner'lar için 8471 (TLS). Runner makinelerinde gelen bağlantı için port açılmaz.
Önce kendi yükünüzü hesaplayın
VU ile istek/sn arasındaki bağ şudur: istek/sn ≈ VU sayısı ÷ (yanıt süresi + think time). 1.000 VU, 200 ms'de yanıt veren bir sistemde 1 saniye think time ile saniyede yaklaşık 830 istek üretir; think time olmadan 5.000. Runner'ı yoran çoğunlukla istek/sn'dir (CPU), VU sayısı ise belleği belirler. Aşağıdaki tablolarda ikisinden hangisi önce dolarsa onu esas alın.
Tek makine (Docker)
Kurulum komutu Postgres'i, controller'ı ve runner'ları aynı makinede başlatır (--runners N, varsayılan 2). Makine boyutu bu üçünün toplamıdır:
| Profil | Yük | Makine | Disk |
|---|---|---|---|
| Deneme | 500 VU'ya kadar, ~2.000 istek/sn | 2 vCPU, 4 GB RAM | 20 GB |
| Küçük ekip | 2.000 VU'ya kadar, ~10.000 istek/sn | 4 vCPU, 8 GB RAM | 40 GB SSD |
| Orta | 5.000 VU'ya kadar, ~25.000 istek/sn | 8 vCPU, 16 GB RAM | 80 GB SSD |
| Büyük | 10.000 VU'ya kadar, ~50.000 istek/sn | 16 vCPU, 32 GB RAM | 100 GB SSD |
Runner sayısını vCPU'nun yarısı kadar seçin (8 vCPU'da --runners 4). 10.000 VU'nun üstünde yükü tek makinede büyütmek yerine başka makinelere runner ekleyin; sınır çoğu zaman ağ kartıdır.
Kubernetes
Kubernetes'te controller ve Postgres sabit, küçük bir yer tutar; büyüyen kısım runner pod'larıdır. Helm chart'ındaki varsayılan runner pod'u en çok 2 vCPU / 1 GiB kullanır ve yaklaşık 10.000 istek/sn ya da 3.000 VU taşır. Pod sayısını istek/sn ÷ 10.000 ile VU ÷ 3.000'den büyük olana göre seçin:
| Hedef yük | Runner pod | Node (öneri) | Postgres diski |
|---|---|---|---|
| 1.000 VU, ~5.000 istek/sn | 1 | 1 node: 4 vCPU, 8 GB | 10 GB |
| 5.000 VU, ~25.000 istek/sn | 3 | 2 node: 4 vCPU, 8 GB | 20 GB |
| 20.000 VU, ~100.000 istek/sn | 10 | 3 node: 8 vCPU, 16 GB | 50 GB |
| 50.000 VU, ~250.000 istek/sn | 25 | 7 node: 8 vCPU, 16 GB | 100 GB |
- Node sayısı runner pod'larının CPU sınırlarının toplamı ve controller ile Postgres için ~2 vCPU'dur. Runner'lara ayrı bir node pool verin; ölçtüğünüz uygulamayla aynı node'larda yük üretmek sonucu çarpıtır.
- İsteğe bağlı runner'lar (
--on-demand-runners N) açıksa runner pod'ları yalnız koşu sırasında yer kaplar; cluster autoscaler ile node'lar da yalnız o sırada açılır. - Pod başına daha çok VU istiyorsanız belleği büyütün (Helm:
runner.resources.limits.memory; isteğe bağlı runner'lardaSPITFIRE_ONDEMAND_MEMORYveSPITFIRE_ONDEMAND_VUS_PER_RUNNER).
Bileşen başına
Controller'ı, veritabanını ve runner'ları ayrı makinelere koyuyorsanız:
| Bileşen | En az | Önerilen | Not |
|---|---|---|---|
| Controller (web arayüzü, API) | 1 vCPU, 1 GB | 2 vCPU, 2 GB | Koşu sayısıyla büyür, istek/sn ile değil |
| Postgres | 1 vCPU, 1 GB, 10 GB disk | 2 vCPU, 4 GB, 50 GB SSD | Saniyelik sonuçlar burada durur |
| Runner (HTTP, gRPC, Kafka…) | 1 vCPU, 1 GB | 2 vCPU, 2 GB | Her vCPU ~5.000 istek/sn, her GB ~3.000 VU |
| Tarayıcı runner'ı (Web Vitals) | 4 vCPU, 8 GB | 4 vCPU, 8 GB | Yaklaşık 10 tarayıcı VU |
- Disk: Postgres'te saniyelik sonuçlar varsayılan olarak 7 gün durur, özetler kalır. Günde birkaç saatlik koşu yapan bir ekip için 50 GB rahattır; saklama süresini uzatırsanız diski de büyütün. SSD önerilir.
- Dosya tanımlayıcı: her VU en az bir soket tutar. Kurulum runner konteynerlerine 65.536 verir; Docker'sız runner'larda
ulimit -ndeğerini de en az bu kadar yapın. - Tarayıcı step'leri (Web Vitals) gerçek bir Chromium açar: tarayıcı VU başına ~350 MB bellek ve çekirdeğin ~%20'si. Bunun için ayrı,
-browserimajlı runner'lar kurulur.
Bu sayılar nereden geliyor
Spitfire 0.56.1'de bir runner'ı tek çekirdeğe sınırlayıp HTTP keep-alive ile küçük yanıtlar dönen bir hedefe yük verdiğimizde runner saniyede 34.000-40.000 istek üretti; açık bağlantısıyla bekleyen her VU ~70 KB bellek tuttu (10.000 VU'da 711 MB). Bu ölçüm hızlı bir dizüstü çekirdeğinde, aynı makinedeki bir hedefle yapıldı. Plan sayıları bilerek bunun çok altında tutuldu (vCPU başına 5.000 istek/sn, GB başına 3.000 VU): HTTPS, birkaç KB'lık JSON yanıtları, kontroller ve değişken çıkarma, sıradan bir bulut vCPU'su ve ağ gecikmesi için pay bırakıldı.
Kendi testiniz için en doğru sayı kendi ölçümünüzdür: testi beklenen yükün onda biriyle koşturun ve Runners sayfasındaki CPU sütununa bakın. Runner CPU sınırına yaklaşınca Spitfire "sonuçlar çarpık olabilir" uyarısını verir; o zaman runner ekleyin. Kurulumun ayrıntıları kurulum rehberinde, Kubernetes'te dağıtık yük Kubernetes rehberinde.
Sık sorulanlar
Spitfire kurmak için en az ne gerekir?
Bir runner kaç VU ve kaç istek/sn taşır?
Kubernetes için ayrı bir cluster gerekir mi?
Ağ bant genişliği ne kadar olmalı?
Spitfire tek komutla Docker'a ya da Kubernetes'e kurulur; ücretsiz sürümde bütün test özellikleri ve protokoller açıktır.