Sürüm: 0.21.0Bu dokümantasyon Spitfire 0.21.0 içindir.
Redis ve MongoDB
Redis
Ne işe yarar
Redis adımı her iterasyonda tek bir Redis command çalıştırır (GET, SET, HGETALL, ZADD, INCR…). Cache katmanınızın, oturum deposunun ya da sayaçlarınızın yük altındaki gecikmesini ölçer. Standalone, cluster ve sentinel kurulumlarıyla çalışır.
Ne zaman kullanılır
- Uygulamanın cache'ten okuma/yazma desenini taklit ederek Redis'in gecikmesini ve bağlantı havuzunu görmek için.
- Bir servisin yükü altında Redis'in darboğaz olup olmadığını anlamak için.
Bağlantı oluşturma
- Bağlantılar → Bağlantı ekle, Tür: Redis.
- Adresler (virgülle):
redis:6379; cluster ya da sentinel için birden çok adres. Zorunludur. - Mod:
standalone(varsayılan),clusterya dasentinel. Sentinel'de Master adı (sentinel) zorunludur. - Kullanıcı (Redis 6+ ACL) ve Parola (secret).
- DB numarası: varsayılan 0 (cluster'da kullanılmaz).
- Havuz boyutu: runner başına bağlantı havuzu; boşsa sürücünün varsayılanı.
- TLS için TLS bölümü (ör. bulut sağlayıcıların TLS'li Redis'i).
- Kaydet, Test et.
Adım ekleme
- Adım ekle → Protokol: Redis → Bağlantı seçin.
- Komut alanına command'ı yazın, örneğin
SET "user:{{__VU}}" "{{$uuid}}" EX 60. Boşluklu değerler için tırnak kullanın; her argüman{{değişken}}içerebilir. - Tehlikeli bir command yazdıysanız altında … komutunu onaylıyorum kutusu çıkar; işaretlemeden test kaydedilemez.
[
{"id": "get", "name": "Ürün cache", "protocol": "redis", "connection": "cache",
"redis": {"command": ["GET", "product:{{$randInt 1 1000}}"]}},
{"id": "set", "name": "Oturum yaz", "protocol": "redis", "connection": "cache",
"redis": {"command": ["SET", "session:{{__VU}}", "{{$uuid}}", "EX", "60"]}}
]JSON'da command bir dizidir: ilk eleman command adı, sonrakiler argümanlar.
Tehlikeli command'lar
Sıradan SET/DEL gibi bir key alanındaki command'lar normal yük testi trafiğidir ve onay istemez. Paylaşılan sunucuyu etkileyen ya da bloklayan şu command'lar ise adımda açık onay ("allowWrite": true) ister:
FLUSHALL, FLUSHDB, SHUTDOWN, CONFIG, DEBUG, SWAPDB, SCRIPT, FUNCTION, CLUSTER, REPLICAOF, SLAVEOF, MIGRATE, KEYS, MONITOR, SAVE, BGSAVE, BGREWRITEAOF, ACL, MODULE.
Onay yoksa kayıt şu hatayla reddedilir: KEYS paylaşılan sunucuda tehlikeli; izin vermek için onayı işaretleyin. Onaylı bir tehlikeli command olan test, her koşu başlatılırken yeniden veri değişikliği onayı ister.
KEYS * yerine SCAN kullanın; KEYS büyük bir veritabanında Redis'i bloklar ve gerçek trafiği durdurur.
Ürettiği metrikler
req_duration (command'ın gidiş-dönüş süresi), req_failed, reqs. Yanıt JSON olarak check'lere ve değişken çıkarmaya gider; key yoksa durum nil olur (ör. Durum check'i ile ayırt edilebilir).
MongoDB
Ne işe yarar
MongoDB adımı bir koleksiyonda tek bir işlem çalıştırır: okuma (find, findOne, aggregate, countDocuments, distinct) ya da yazma (insertOne, insertMany, updateOne, updateMany, replaceOne, deleteOne, deleteMany). Okuma işlemleri veri değiştirmez; yazma işlemleri açık onay ister.
Ne zaman kullanılır
Uygulamanızın sorgu desenini (filtre, sıralama, limit, aggregate pipeline) yeniden üreterek MongoDB'nin, index'lerin ve bağlantı havuzunun yük altındaki davranışını görmek için.
Bağlantı oluşturma
- Bağlantılar → Bağlantı ekle, Tür: MongoDB.
- URI (parolasız):
mongodb://mongo:27017ya damongodb+srv://cluster0.example.net. Zorunludur; parolayı URI'ye yazmayın, kayıt reddedilir. - Kullanıcı ve Parola (secret).
- Auth source: kullanıcının tanımlı olduğu veritabanı, çoğu zaman
admin. - Veritabanı: adımlarda veritabanı yazılmazsa kullanılan varsayılan.
- En çok havuz: runner başına bağlantı havuzu.
- TLS için TLS bölümü.
- Kaydet, Test et.
Adım ekleme
- Adım ekle → Protokol: MongoDB → Bağlantı seçin.
- İşlem listesinden işlemi seçin (liste Okuma ve Yazma gruplarına ayrılmıştır).
- Koleksiyon yazın. Veritabanı boşsa bağlantının varsayılanı kullanılır.
- İşleme göre alanları doldurun: Filtre (JSON), Projection, Sıralama, Limit, Belge (JSON) (insert/replace;
insertManyiçin JSON dizi), Güncelleme (JSON), Pipeline (JSON dizi), Alan (distinct). - Okuma işlemlerinde Okuma işlemi; veri değiştirilmez. yazar. Yazma işlemlerinde … veriyi değiştirir, onaylıyorum kutusunu işaretlemeniz gerekir.
[
{"id": "find", "name": "Ürün ara", "protocol": "mongo", "connection": "catalog-mongo",
"mongo": {"collection": "products", "operation": "find",
"filter": "{\"category\": \"books\"}", "sort": "{\"price\": 1}", "limit": 20},
"checks": [{"type": "rowCount", "op": "gt", "value": 0}]},
{"id": "insert", "name": "Yorum ekle", "protocol": "mongo", "connection": "catalog-mongo",
"mongo": {"collection": "reviews", "operation": "insertOne",
"document": "{\"product\": \"{{$uuid}}\", \"stars\": 5}", "allowWrite": true}}
]Pipeline'ında $out ya da $merge olan bir aggregate de yazma sayılır ve onay ister (aggregate veriyi değiştirir; izin vermek için "veri değiştirir" onayını işaretleyin).
Ürettiği metrikler
req_duration, req_failed, reqs ve Satır sayısı check'inin kullandığı satır sayısı (dönen ya da etkilenen belge sayısı). findOne belge bulamazsa durum not_found olur.
Sık karşılaşılan sorunlar
Belirti: Redis NOAUTH Authentication required ya da WRONGPASS.
Neden: Parola (veya ACL kullanıcısı) eksik ya da yanlış.
Çözüm: Parola'yı yeniden yazıp kaydedin; Redis 6+ ACL kullanıyorsanız Kullanıcı'yı da girin.
Belirti: Redis MOVED / CROSSSLOT hataları.
Neden: Sunucu cluster ama bağlantı standalone modunda; ya da tek command farklı slot'lardaki key'lere dokunuyor.
Çözüm: Mod'u cluster yapın; çok key'li command'larda hash tag ({user}:a, {user}:b) kullanın.
Belirti: Redis kaydında … paylaşılan sunucuda tehlikeli hatası. Neden: Command onay isteyen listede. Çözüm: Gerçekten gerekiyorsa onay kutusunu işaretleyin; mümkünse daha güvenli bir command kullanın.
Belirti: MongoDB Authentication failed.
Neden: Kullanıcı başka bir veritabanında tanımlı.
Çözüm: Auth source'u kullanıcının oluşturulduğu veritabanı yapın (çoğu zaman admin).
Belirti: MongoDB server selection error / context deadline exceeded.
Neden: Replica set üyelerinin ilan ettiği host adları controller'dan ya da runner'lardan çözülmüyor, ya da TLS gerekiyor.
Çözüm: Üyelerin host adlarının erişilebilir olduğundan emin olun; Atlas gibi servislerde TLS kullan'ı işaretleyin ve IP erişim listesine controller ile runner'ları ekleyin.
Belirti: Kayıt reddediliyor: … veriyi değiştirir; izin vermek için "veri değiştirir" onayını işaretleyin. Neden: Bir yazma işlemi onaysız. Çözüm: Test ortamına yazdığınızdan emin olup onay kutusunu işaretleyin.