Sledování front v systému Laravel: Průvodce krok za krokem

Monitorování front v systému Laravel: Průvodce krok za krokem Při práci s frontami Laravel může být někdy výkon ovlivněn náhlým přílivem úloh. Pokud dojde k zahlcení fronty, může...

Světlý režim slouží jen pro ukázku funkcionality. Proto používejte tmavou verzi webu.

23. 12. 2024

Sledování front v systému Laravel: Průvodce krok za krokem

Monitorování front v systému Laravel: Průvodce krok za krokem

Při práci s frontami Laravel může být někdy výkon ovlivněn náhlým přílivem úloh. Pokud dojde k zahlcení fronty, může to vést k prodloužení čekací doby na zpracování úloh, což může ovlivnit odezvu aplikace. Laravel naštěstí nabízí vestavěné nástroje, které vám pomohou monitorovat fronty a upozorní vás, pokud počet úloh překročí zadanou hranici. V této příručce si projdeme, jak nastavit monitorování vašich front a přijímat oznámení, když jsou velmi zatížené.

Krok 1: Naplánujte queue:monitor Příkaz

Chcete-li začít sledovat fronty, musíte použít příkaz queue:monitor Řemeslný příkaz. Tento příkaz kontroluje velikost front a pomáhá zjistit, kdy jsou fronty přeplněné. Můžete zadat, které fronty chcete sledovat, a nastavit prahovou hodnotu pro maximální počet úloh, které by měly být v každé frontě povoleny.

Příklad příkazu

Chcete-li sledovat konkrétní fronty, spusťte v terminálu následující příkaz:

php artisan queue:monitor redis:default,redis:deployments --max=100

Tento příkaz provede následující:

  • Sleduje dvě fronty: redis:default a redis:deployments.
  • Nastaví prahovou hodnotu na 100 úloh. Pokud některá z front překročí 100 úloh, spustí se upozornění.

Pouhé spuštění příkazu však nestačí k odeslání upozornění na překročení prahové hodnoty. Pro spouštění upozornění je třeba nastavit posluchače událostí, kterým se budeme věnovat v dalším kroku.

Krok 2: Poslechněte si QueueBusy Událost

Laravel odešle QueueBusy událost, když fronta překročí prahovou hodnotu počtu úloh, kterou jste nastavili pomocí příkazu queue:monitor příkaz. Chcete-li na tuto událost reagovat a odeslat oznámení, musíte ji sledovat v aplikaci. AppServiceProvider.

Přidání posluchače událostí v AppServiceProvider

Otevřete si AppServiceProvider.php soubor, který se nachází v app/Providers adresář. V boot tohoto zprostředkovatele, budete poslouchat na QueueBusy událost.

Zde je příklad, jak to udělat:

use App\Notifications\QueueHasLongWaitTime;
use Illuminate\Queue\Events\QueueBusy;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Notification;
 
public function boot(): void
{
// Listen for the QueueBusy event
Event::listen(function (QueueBusy $event) {
// Send a notification when the queue is overwhelmed
Notification::route('mail', 'dev@example.com')
->notify(new QueueHasLongWaitTime(
$event->connection,
$event->queue,
$event->size
));
});
}

Krok 3: Vytvoření třídy oznámení

Dalším krokem je vytvoření třídy oznámení, která bude sloužit k zasílání upozornění. Tato třída bude určovat, jak má být oznámení formátováno a jak má být odesláno (např. e-mailem).

Pro vygenerování oznámení spusťte následující příkaz Artisan:

php artisan make:notification QueueHasLongWaitTime

Tím se vytvoří nová třída oznámení v app/Notifications adresář. Otevřete nově vytvořený soubor a určete, jakým způsobem se má oznámení odesílat.

Zde je příklad základního oznámení, které odešle e-mail:

namespace App\Notifications;
 
use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;
 
class QueueHasLongWaitTime extends Notification
{
protected $connection;
protected $queue;
protected $size;
 
public function __construct($connection, $queue, $size)
{
$this->connection = $connection;
$this->queue = $queue;
$this->size = $size;
}
 
public function via($notifiable)
{
return ['mail'];
}
 
public function toMail($notifiable)
{
return (new MailMessage)
->subject('Queue is Overwhelmed')
->line("The queue '{$this->queue}' on connection '{$this->connection}' has exceeded the job threshold.")
->line("Current job count: {$this->size}")
->line('Please investigate the cause of the high job count.');
}
}

Toto oznámení odešle na zadanou adresu e-mail s informacemi o frontě, která překročila počet úloh.

Krok 4: Testování monitorovacího systému

Nyní, když je vše nastaveno, je čas otestovat systém monitorování fronty.

  1. Spustit php artisan queue:monitor spustit monitorování front.
  2. Simulujte situaci, kdy počet úloh překročí zadanou prahovou hodnotu. Můžete buď posunout velký počet úloh do fronty, nebo dočasně upravit prahovou hodnotu, aby se událost spustila.
  3. Zkontrolujte e-mailovou schránku uvedenou v oznámení a potvrďte, že upozornění bylo přijato.

Pokud vše funguje správně, měl by se vám zobrazit e-mail s upozorněním, když vaše fronta překročí prahovou hodnotu.

Závěr

Podle těchto kroků můžete snadno nastavit monitorování front v systému Laravel a dostávat upozornění, když jsou vaše fronty přeplněné. Toto nastavení vám zajistí, že budete moci přijmout proaktivní opatření k vyřešení problémů dříve, než ovlivní výkon vaší aplikace. Monitorování front vám nejen pomůže vyhnout se úzkým místům, ale také vás bude v reálném čase informovat o potenciálních problémech.

Původní článek publikoval Nabil Hassen.

Mohlo by vám pomoct

Praktické věci kolem webu

Než se pustíte do webu, hodí se mít jasno v podkladech, WordPressu, cookies a měření.

Google reference

Co říkají klienti

Ukázky skutečných recenzí, které klienti zanechali na mém Google profilu.

Přejít na recenze
★ ★ ★ ★ ★

„Člověk, který své práci a rozumí a ví co dělá. Velmi rychlá komunikace a profesionální přístup. Doporučuji.“

Jaroslav Kupča
Google
★ ★ ★ ★ ★

„Skvělá spolupráce, při dalších projektech určitě nebudu shánět někoho jiného.“

Roman Koňařík
Google
★ ★ ★ ★ ★

„S panem Vančurou jsem spolupracovala na tvorbě mých webových stránek a jsem maximálně spokojená. Oceňuji profesionální přístup, rychlou komunikaci a schopnost přesně pochopit moje představy. Web je moderní, přehledný, funkční a skvěle vypadá i na mobilu. Celý proces proběhl hladce, s jasným vysvětlením jednotlivých kroků a výborným výsledkem. Určitě doporučuji každému, kdo hledá spolehlivý a kvalitní přístup.“

Barbora Zemánková
Google
★ ★ ★ ★ ★

„Spolupráce při tvorbě konfigurátoru proběhla naprosto bez problémů. Oceňuji profesionální přístup, rychlou komunikaci a schopnost pochopit specifický projekt od A do Z. Konfigurátor je přehledný, funkční a přesně odpovídá mým požadavkům. Rozhodně doporučuji.“

mareksevcik_FPV
Google
★ ★ ★ ★ ★

„Velmi dobrá a rychlá spolupráce. Doporučuji!“

Leoš Kaucký
Google
★ ★ ★ ★ ★

„Přesně takto si představujeme profesionální práci. Dekujeme“

STAVILLI
Google
★ ★ ★ ★ ★

„Ať už se jedná o optimalizaci webu, nebo tvorbu na míru oceňuji kromě profesionální práce a znalostí problematiky také férový přístup a komunikaci.“

Aleš Illický
Google
★ ★ ★ ★ ★

„Děkuji za profesionální spolupráci, vše dle domluvy, naprostá spokojenost a mohu jen vřele doporučit.... Při dalších projektech určitě opět využiji Vašich služeb“

Peter Spilak
Google
★ ★ ★ ★ ★

„Profesionalita a velká ochota, nemohu jinak než doporučit“

Magdalena Vašková
Google
★ ★ ★ ★ ★

„Skvělá zkušenost při tvorbě webu, profesionální přístup, rychlost, ochota pomoci“

Jana Kono
Google
★ ★ ★ ★ ★

„Rychlá spolupráce a komunikace – mohu jen doporučit.“

Gawix
Google
★ ★ ★ ★ ★

„Moc mi pomohl, když jsem potřebovala pomoc s webem. A bylo to gratis :)). Jsem mu neskonale vděčná.“

Radka Arbesová
Google
★ ★ ★ ★ ★

„Děkuji Jiřímu za rychlou a kvalitní spolupráci na tvorbě webu. Srozumitelná a ochotná komunikace mě vždycky potěší a přináší důvěru.“

Jiří Mařík
Google
★ ★ ★ ★ ★

„Jsem maximálně spokojená. Rychlost, ochota a cenově dostupné. Děkuji“

Veronika Černá
Google
★ ★ ★ ★ ★

„Naprostá spokojenost. Rychlá komunikace, skvělá cena a odborná pomoc. Moc děkuji :)“

Patricie Kučerová
Google
★ ★ ★ ★ ★

„Velká spokojenost, rychlost a p. Vančura moc dobře ví co dělá. :)“

Ondřej Daniško
Google
★ ★ ★ ★ ★

„dobrá práce, rychlá odezva“

Zuzana Jírová
Google
★ ★ ★ ★ ★

„S programátory mám zkušeností hodně, ale tady musím opravdu pochválit. Pro mě a mé přátele vytvořil skvělý nástroj na evidenci sbírek a opravdu se to povedlo. Bylo to hotové rychle, kvalitně a za skvělou cenu. Komunikace funguje velmi rychle, což je super a ne úplně standard. Díky za super práci, za mě 100% spokojenost!“

Zdeněk
Google
★ ★ ★ ★ ★

„Vše bylo rychlé a hlavně to funguje. Dobrá práce.“

Lukáš Bartášek
Google
★ ★ ★ ★ ★

„Normálně recenze nepíši, ale zde rád doporučím kvalitní práci. Jiří pro mě vytvořil web pro dětské tábory. Kvalitní práce, rychlá komunikace a vlastní nápady, které Jiří sám přidá, jsou na velice vysoké úrovni. Nemohu hodnotit jinak než 5/5.“

Tomáš Loněk
Google
★ ★ ★ ★ ★

„Pan Jiri nam delal jiz 3 webove stranky a vzdy velka spokojenost, je mega rychly a vse hned kladne vyridi, mohu pouze doporucit. Poradi si bez problemu i s rezervacnimi kalendaremi, udrzbou socialnich siti, atd.“

Barbara Mašková
Google