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:defaultaredis: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.
- Spustit
php artisan queue:monitorspustit monitorování front. - 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.
- 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.