Killed Meldung bei ./bin/console media:generate-thumbnails

Tach zusammen,

nach dem SW Update (Tests auf ner DEV) von 6.4 auf 6.7 werden die Thumbnails neu generiert.
Dabei erhalte ich die Meldung Killed:

$ ./bin/console media:generate-thumbnails

82600/88355 [==========================░░]  93% 12 mins, 37 secsKilled

Wie kann ich das verhindern damit alle Thumbnails neu generiert?

Hallo @gbmedia ,

was sagen denn die Logs dazu?
Ich denke das hast du schon geprüft, dennoch - ist genug Speicherplatz vorhanden? Oder evtl. der RAM ausgeschöpft?

Viele Grüße
Marco

Hi,

danke für die schnelle Rückmeldung.
In den Logs finde ich leider nichts.
Laut Symfony ist ein Killed, wenn der Speicher erschöpft ist.
Die Einstellung dafür ist schon auf -1.
MaxCluster zeigt mir 14 GB RAM an, das sollte eigentlich reichen.
Der Speicherplatz sollte auch vollkommen ausreichen.

Nach nem Update wäre es bitter, wenn einige Thumbnails fehlen :frowning:

Ist das zufällig Hetzner? Also falls ja, oder eventuell auch bei anderen hostern - läuft dort eine Prozesswache die Prozesse abwürgt die zu lange laufen oder zu viel Speicher verbrauchen. Frag beim Hoster nach.

Ne ist bei MaxCluster, aber danke für den Tipp, ich prüf das mal.

Damit es trotzdem weiter geht, habe ich das Script angepasst, damit die ersten 80k Datensätze übersprungen werden.

Wem’s interessiert, hier die angepasste Methode:
core/Content/Media/Commands/GenerateThumbnailsCommand.php

private function generateThumbnails(RepositoryIterator $iterator, Context $context): array
{
    $generated = 0;
    $skipped = 0;
    $errored = 0;
    $errors = [];
    //custom
    $counter = 0;
    //custom end

    while (($result = $iterator->fetch()) !== null) {
        //custom
        $counter += $result->count();
        if($counter <= 80000){
            $this->io->progressAdvance($result->count());
            continue;
        }
        //custom end

        foreach ($result->getEntities() as $media) {
            try {
                if ($this->thumbnailService->updateThumbnails($media, $context, $this->isStrict) > 0) {
                    ++$generated;
                } else {
                    ++$skipped;
                }
            } catch (\Throwable $e) {
                ++$errored;
                $errors[] = [\sprintf('Cannot process file %s (id: %s) due error: %s', $media->getFileName(), $media->getId(), $e->getMessage())];
            }
        }
        $this->io->progressAdvance($result->count());
    }

    return [
        'generated' => $generated,
        'skipped' => $skipped,
        'errored' => $errored,
        'errors' => $errors,
    ];
}

Das Script läuft nun durch und beweist, dass es nicht an einem fehlerhaften Datensatz oder Datei liegt.
Ich vermute, dass einfach der Speicher voll läuft und daher abgebrochen wird.