Kuyruk Bakımı

1.6k görüntülenme Markdown

Kuyrukları temizleyen, boyutlarını ölçen ve geri yükleme uyarısını yöneten beş uç.

Genel Bakış

Kuyruklar zamanla büyür. Bu beş uç bakımla ilgilenir: eski işleri temizlemek, tabloların ne kadar yer tuttuğunu görmek ve veritabanı geri yüklendiğinde çıkan uyarıyı yönetmek.

Temizlik iki adımdır. Ön izleme sayar ve hiçbir şey silmez; çalıştırma ise saklama süresini aşmış işleri kalıcı olarak kaldırır. Ölçüt görev ayarlarındaki saklama günleridir.

Geri yükleme uyarısı, otomasyonun uzun süre sessiz kaldığını fark ettiğinde doğar. Bu genellikle veritabanının eski bir yedekten geri yüklendiği anlamına gelir; kuyrukta yeniden koşacak ya da çoktan geçmiş işler bulunabilir.

Referans

Temizliği Ön İzleme

get/api/v1/admin/automation/cleanup/preview
Automation/PreviewAutomationCleanup admin hiçbir şey silmez

Saklama kurallarına göre kaç işin silineceğini gösterir.

Dönen alanlar data — 4
completedintSilinecek tamamlanmış iş sayısı.
cancelledintSilinecek iptal edilmiş iş sayısı.
failedintSilinecek düşmüş iş sayısı.
retentionobjectSayımın dayandığı saklama günleri.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/automation/cleanup/preview' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/automation/cleanup/preview', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();

const willGo = data.completed + data.cancelled + data.failed;
$ch = curl_init('https://panel.ornek.com/api/v1/admin/automation/cleanup/preview');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Bu uc SAYAR, silmez; temizlikten once her zaman buradan bakin.
$plan = Api::Automation()->PreviewAutomationCleanup()['data'];
if ($plan['completed'] + $plan['cancelled'] + $plan['failed'] > 0)
    Api::Automation()->RunAutomationCleanup();

Temizliği Çalıştırma

post/api/v1/admin/automation/cleanup/run
Automation/RunAutomationCleanup admin kalıcı silme

Saklama süresini aşmış işleri kalıcı olarak siler.

Gövde —
——Gövde gerekmez, boş gönderin. Saklama süresi istekten değil otomasyon ayarlarından gelir; temizliğin kapsamını genişletecek ya da daraltacak bir alan yok.
Dönen alanlar data — 2
deletedintSilinen toplam iş sayısı.
breakdownobjectDuruma göre döküm: tamamlanan, iptal edilen ve düşen.
Hatalar 2
blocked_by_gate422Bir kanca temizliği reddetti.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/automation/cleanup/run' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/automation/cleanup/run', {
  method: 'POST',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const { data } = await res.json();
console.log(data.deleted, data.breakdown);
$ch = curl_init('https://panel.ornek.com/api/v1/admin/automation/cleanup/run');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Silinen isler geri gelmez: dusen islerin hata mesajlari da onlarla birlikte gider.
$r = Api::Automation()->RunAutomationCleanup()['data'];

Tablo Boyutlarını Okuma

get/api/v1/admin/automation/table-stats
Automation/GetAutomationTableStats admin

Üç kuyruk tablosunun satır sayısını ve ortalama veri boyutunu döndürür.

Dönen alanlar data — 3
cronjob_queueobjectZamanlanmış görev kuyruğu: satır sayısı ve ortalama veri boyutu.
module_queueobjectModül kuyruğu: satır sayısı ve ortalama veri boyutu.
notification_queueobjectBildirim kuyruğu: satır sayısı ve ortalama veri boyutu.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/automation/table-stats' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/automation/table-stats', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/automation/table-stats');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Satir sayisi degil SATIR x ORTALAMA BOYUT buyumeyi anlatir; ikisini birlikte okuyun.
$t = Api::Automation()->GetAutomationTableStats()['data'];
$approx = $t['cronjob_queue']['rows'] * $t['cronjob_queue']['avg_payload'];

Geri Yükleme Uyarısını Kapatma

post/api/v1/admin/automation/restore/dismiss
Automation/DismissAutomationRestore admin

Geri yükleme şüphesi uyarısını kaldırır.

Gövde —
——Gövde gerekmez, boş gönderin. Bu uç hiçbir şey almaz: ayarlarda tutulan şüphe işaretlerini temizler.
Dönen alanlar data — 1
dismissedboolUyarı kaldırıldı mı.
Hatalar 2
config_write_failed422Ayar dosyası yazılamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/automation/restore/dismiss' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/automation/restore/dismiss', {
  method: 'POST',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/automation/restore/dismiss');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Uyariyi kapatmak SEBEBI ortadan kaldirmaz; once bosluk nereden geldi diye bakin.
$s = Api::Automation()->GetAutomationSettings()['data'];
if ($s['restore']['suspected_at'] !== null)
    Api::Automation()->DismissAutomationRestore();

Geri Yükleme Uyarısını Elle Açma

post/api/v1/admin/automation/restore/trigger
Automation/TriggerAutomationRestore admin panelde parola ister

Geri yükleme uyarısını elle açar. Kuyruklar temizlenmez, görevler ertelenmez.

Gövde —
——Gövde gerekmez, boş gönderin. Bu uç hiçbir şey almaz: yazdığı şüphe zamanı çağrının kendi anıdır.
Dönen alanlar data — 1
triggeredboolİşaret konuldu mu.
Hatalar 2
config_write_failed422Ayar dosyası yazılamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/automation/restore/trigger' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/automation/restore/trigger', {
  method: 'POST',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/automation/restore/trigger');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Panelde bu islem ADMIN PAROLASI ister; API'de tek kapi anahtarin kapsamidir.
Api::Automation()->TriggerAutomationRestore();

Tuzaklar

Önce sayın, sonra silin

Temizlik çalıştırma ucu geri alınamaz ve kaç kaydın gideceğini önceden söylemez. Ön izleme ucu tam da bunun için vardır: aynı ölçütle sayar, hiçbir şeye dokunmaz. Saklama günlerini yeni değiştirdiyseniz önizlemeye bakmadan temizlik çalıştırmak beklediğinizden çok daha fazlasını silebilir.

Silinen iş hata mesajını da götürür

Temizlik düşmüş işleri de kaldırır ve onlarla birlikte hata mesajları da gider. Bir sorunu araştırırken temizlik çalıştırmak, aradığınız kanıtı ortadan kaldırabilir. Düşen işlerin saklama süresini tamamlananlardan uzun tutmak bu yüzden mantıklıdır.

Satır sayısı tek başına yeri anlatmaz

Tablo istatistikleri hem satır sayısını hem ortalama veri boyutunu verir. Az satırlı ama büyük veri taşıyan bir kuyruk, çok satırlı küçük bir kuyruktan daha fazla yer tutabilir. Büyümeyi izlerken ikisini çarpın; yalnız satır saymak yanıltır.

Uyarıyı kapatmak sebebi kaldırmaz

Geri yükleme uyarısını kapatmak yalnız işareti siler; kuyruğun neden uzun süre sessiz kaldığını değiştirmez. Uyarıyı otomasyon kendisi açtıysa bekleyen işler zaten kaldırılmış, açık görevler ileri alınmıştır. Kapatmak bunları geri getirmez. Kapatmadan önce son işlerin tarihlerine bakın.

Panelin parola kapısı burada yok

Panelde geri yükleme uyarısını elle açmak için yönetici parolası gerekir; bu uçta tek kapı anahtarın kapsamıdır. Yani bu kapsamı taşıyan bir anahtar, panelde ek doğrulama gerektiren bir işlemi doğrudan yapabilir. Anahtarları dağıtırken bu farkı gözetin.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.