Cron-Lauf und Update-Check dauern viel zu lange
am 07.07.2009 - 19:55 Uhr in
Hallo,
habe auf Drupal 6.13 umgestellt und musst feststellen, dass nun der Cron-Lauf und der Update-Check (Verfügbare Aktualisierungen) noch länger dauern.
Es ist schon ein großes Projekt mit vielen Modulen und der mysql-Wert wait_timeout=30 reicht nicht mehr aus seit Drupal 6.13.
Klar kann ich wait_timeout=60 setzen, aber ich möchte trotzdem wissen, wie man die 2 Dinge verkürzen kann:
- Cron-Lauf
- Update-Check
Wenn das schon fast eine Minute lang dauert, dann muss man sich doch überlegen, was man tun kann, damit es vielleicht in 20 Sekunden abgewickelt werden kann.
Aber wie kann man das verkürzen?
Danke.
- Anmelden oder Registrieren um Kommentare zu schreiben

Finde heraus welches Modul verantwortlich ist
am 08.07.2009 - 10:29 Uhr
Ersetze die Funktion
module_invoke_allin der Dateiincludes/module.incdurch folgende Variante:<?php
function module_invoke_all() {
$args = func_get_args();
$hook = $args[0];
unset($args[0]);
$return = array();
foreach (module_implements($hook) as $module) {
$function = $module .'_'. $hook;
($hook == 'cron') ? $start = time() : 0;
$result = call_user_func_array($function, $args);
if (isset($result) && is_array($result)) {
$return = array_merge_recursive($return, $result);
}
else if (isset($result)) {
$return[] = $result;
}
($hook == 'cron') ? $time = time() - $start : 0;
($hook == 'cron') ? $messages[] = "$module: $time" : 0;
}
($hook == 'cron') ? watchdog('debug', join("\n", $messages)) : 0;
return $return;
}
?>
Lasse dann Cron laufen. Schaue nach Beendigung in die Log-Meldungen von Drupal. Du solltest dort dann sehen, welches Modul dir die Zeit stiehlt.
--

Und wie?
am 10.07.2009 - 15:50 Uhr
Hallo,
das ist ein guter Tipp.
Ich habe das jetzt gemacht und habe beim Cron-Lauf folgende Debug-Meldung erhalten im Log:
dblog: 0
filter: 0
node: 0
search: 0
und so weiter, bei allen Modulen steht die 0 dabei, nur bei photos nicht:
photos: 5
Was heißt das nun?
Das Problem dabei:
Eigentlich dauert doch die Überprüfung auf neue Updates sehr lange. Und manchmal scheint diese Überprüfung ein Teil des Cron-Laufes zu sein, in diesem Fall da oben war es nicht Teil des Cron-Laufes, vielleicht auch, weil im Moment alle Module gerade aktualisiert wurden.
Dann wär es aber toll, wenn man auch dann Debug-Infos erhalten würde, wenn man die Prüfung auf neue Updates manuell startet unter
/admin/reports/updates/check
(aufrufbar: Menü "Berichte - Verfügbare Aktualisierungen).
Denn genau darum geht es glaube ich. Wie kann man da herausfinden, was da so lange dauert?
Danke.
Hilfe: Cron-Lauf dauert weit über 1 Minute!
am 12.08.2009 - 15:54 Uhr
Der Cronjob wurde jetzt zuletzt vor 3 Tagen manuell aufgerufen.
Nun will ich den Cronjob starten, es geht aber nicht: Der Cronlauf dauert weit über eine Minuten, da aber "wait timeout" auf 60 gesetzt ist, wird leider schon vorher abgebrochen.
Die WICHTIGE Frage:
- Was dauert denn so lange?
- Die Suchindizierung ist derzeit zu 100% indidziert.
- Dauert das Suchen nach Updates so lange?
- Kann man das automatische Suchen nach Updates ausschalten und dies manuell aufrufen? Wie?
Was dauert hier so lange? Wie kann man das rausfinden, obiger Test hat leider nicht funktioniert.
Danke.
Und warum funktioniert das nicht, wenn man
set_time_limit(0);ignore_user_abort(true);
in die Datei cron.php einbaut und dann den Cronjob über /cron.php startet (Aufruf im Browser)? Die 2 Befehle werden anscheinden ignoriert, denn nach 60 Sekunden (wai timeout) erfolgt leider der Abbruch und damit kann ein Cronlauf nicht stattfinden.
Verfügbare Aktualisierungen Aufruf: 85 Sekunden - UNBRAUCHBAR!
am 12.08.2009 - 16:18 Uhr
Der manuelle Check nach verfügbaren Updates dauert derzeit 85 Sekunden lang!!! Das ist doch Wahnsinn. Was dauert da so lange? Und kann man das nicht beschleunigen oder aufteilen: Sprich nur 25% aller Module werden nach Updates untersucht, im nächsten Aufruf wieder 25% usw.
Der Cronjob selbst ist also nicht das Problem, sondern rein der Update-Check. Der dauert viel zu lange. Ist hier eine Lösung in Sicht?
Denn leider bricht hier jeder Cronjob-Aufrufer ab und damit kann der Cronjob nicht erfolgreich durchgeführt werden. Der nächste leider gar nicht mehr, weil dazwischen ein cron_cleanup nötig ist, was aber nur der Amin händisch machen kann.
DIESES PROBLEM IST WIRKLICH GROSS UND DRINGEND!
Verfügbare Updates - Dauert länger als 60 Sekunden - verkürzen!
am 27.03.2010 - 16:13 Uhr
Da dies noch immer sehr aktuell ist:
Wie kann man den Check nach neuen Updates (Verfügbare Updates) verkürzen, so dass der Vorgang weniger als eine Minute dauert?
Danke!
zweimal aufrufen
am 27.03.2010 - 17:40 Uhr
Ich bekomme auch öfters, timeout Meldungen beim Update check oder beim Run Updates.
Die simple Lösung ist den Update nochmal ausführen - das mysql caching hat schon einen Teil der Abfrage in cache und läuft dann durch.
Nebenbei, in php.ini habe ich mssql.timeout=80
Teilabfragen, aber wie?
am 27.03.2010 - 17:48 Uhr
Ja, das dachte ich mir auch, dass man es mehrmals aufrufen können sollte, aber irgendwie macht das nicht nur den Anschein, sondern es scheint wirklich so zu sein, dass bei jedem Aufruf alle Module abgefragt werden.
Wie kann man den steuern, dass nur 30% oder 20% der Module beim Aufruf abgefragt werden??
Dann könnte doch dort stehen: Noch 70% fehlen. Beim nächsten Aufruf: Noch 40% fehlen und nach einigen Aufrufen, die jeweils 15 bis 35 Sekunden dauern, hat man alles da und kann es ansehen.
php.ini kann ich leider nicht verändern und der Server Admin ist meist nicht begeistert.
wait_timeout wird überschritten wegen viele Module
am 11.11.2010 - 00:02 Uhr
Gibt es noch immer keine Lösung dafür?
Leider habe ich sehr viele Module bei den meisten Projekten und mysq wait_timeout ist auf 60 gesetzt. Wegen der vielen Module reicht das NICHT aus.
Welche Lösung gibt es außer das update Modul abzudrehen?
Gibt es eine Lösung dafür?
am 11.11.2010 - 19:51 Uhr
Gibt es eine Lösung dafür?