Verbindungs-Probleme bei WordPress: Es hat etwas mit dem Heartbeat zu tun – admin-ajax.php
Da ich nicht die schnellste Internet-Verbindung habe, die auch am Nachmittag noch sichtlich in die Knie geht, habe ich derzeit Probleme mit WordPress – hier bereits beschrieben: Verbindung wurde unterbrochen. Speichern wurde deaktiviert, bis die Verbindung wiederhergestellt ist. Wir sichern diesen Beitrag in Deinem Browser, nur für den Fall
Nachdem man mich mit der Nase darauf gestoßen hat, ich sollte man den Netzwerk-Monitor im Browser zu Rate ziehen, habe ich in den letzten Tage etwas gekruscht.
WordPress plärrt tatsächlich dauernd zum Server und das Ding nennt sich anscheinend Heartbeat. Per Standard ist das eine Anfrage alle 15 Sekunden! Man sieht hier auch sehr schön, dass wirklich nicht viele Daten übertragen werden. Das Frage-Antwort-Spiel dauert aber immer fast zwei Sekunden – das ist eine ziemlich heftige Latenz, die ich aber nicht ändern kann.
Ich habe das auch mit einer komplett neuen WP-Instanz (Twenty Fourteen – keine Plugins) ausprobiert und die Plärrerei ist dort genauso vorhanden. Allerdings nur alle 60 Sekunden.
Alle 15 Sekunden wird die Datei admin-ajax.php aufgerufen und wartet auf eine Bestätigung vom Server. Auch im Leerlauf, wenn man also gar nichts macht. Angeblich soll sich der Heartbeat nach fünf Minuten oder so automatisch verlangsamen, wenn nichts am Rechner passiert. Bringt mir wenig, da ich nur in WordPress bin, wenn ich etwas schreibe.
Dieser admin-ajax.php-Heartbeat tritt auch nur dann auf, wenn man eine neue Seite oder einen neuen Beitrag verfasst. Die Datei ist wohl unter anderem dafür zuständig, die Artikel automatisch zu speichern.
Was bei mir passiert, wenn das Internet am Nachmittag langsamer wird ist das – Timeouts:
Die Heartbeat-Funktionalität gibt es wohl schon seit WordPress 3.6. In einigen Foren ist zu lesen, dass dies anfangs Server aufgrund von hoher CPU-Last in die Knie gezwungen hat. Mich nervt das Ding erst seit WordPress 3.8 und zwar gewaltig.
Wozu brauche ich das?
Diese Frage stellt sich in meinem Fall. Ich will weder Revisionen noch Auto-Sicherungen. Ich kümmere mich selbst darum und will es nicht haben. Ich will aber auch diesen Heartbeat nicht haben, weil er in meinem Fall nur nervt, stört und kontraproduktiv ist.
Was habe ich versucht?
Ich hätte das Ding am liebsten los und habe einige Beiträge dazu gefunden. Es gibt diverse Vorschläge, wie man den Heartbeat angeblich deaktivieren oder verlangsamen kann. Minimum ist 5 und Maximum 60 Sekunden (Standard 15). Hier mal die Ratschläge, von denen bei mir kein einziger funktioniert (muss ich in der neuen WordPress-Installation erst noch probieren, aber es geht ja um meine Seite)
add_action( 'init', 'my_deregister_heartbeat', 1 );
function my_deregister_heartbeat() {
global $pagenow;
if ( 'post.php' != $pagenow && 'post-new.php' != $pagenow )
wp_deregister_script('heartbeat');
}
remove_action( 'admin_init', 'wp_auth_check_load' );
function wptuts_heartbeat_settings( $settings ) {
$settings['autostart'] = false;
return $settings;
}
add_filter( 'heartbeat_settings', 'wptuts_heartbeat_settings' );
function wptuts_heartbeat_settings( $settings ) {
$settings['interval'] = 60; //Anything between 15-60
return $settings;
}
add_filter( 'heartbeat_settings', 'wptuts_heartbeat_settings' );
function wptuts_respond_to_browser( $response, $data, $screen_id ) {
if ( isset( $data['wptuts-plugin'] ) ) {
// Plug-in data being sent to browser
$response['wptuts-plugin'] = array(
'hello' => 'world'
);
// Slow the hearbeat
$response['heartbeat_interval'] = 'slow';
}
return $response;
}
add_filter( 'heartbeat_received', 'wptuts_respond_to_browser', 10, 3 ); // Logged in users
add_filter( 'heartbeat_nopriv_received', 'wptuts_respond_to_browser', 10, 3 ); // Logged out users
Diese Vorschläge kommen größtenteils von dieser Seite und nichts hilft.
Deaktiviere ich alle Plugins in meiner Installation, schlägt der Heartbeat fröhlich weiter und ich habe zwei Phänomene:
- Mal meldet sich der Heartbeat alle 15 Sekunden
- Dann wieder alle 60 Sekunden
Wann welcher kommt, ich habe keine Ahnung – der Artikel ist leer vor mir und ich bewege weder die Maus noch tippe ich etwas ein. Verstehe ich nicht.
Ich kapituliere vorerst
Ich weiß nicht, wie ich das Ding weg bekomme oder langsamer mache. Ich habe nun schon einige Stunden investiert und mir ist es mittlerweile einfach zu blöd. Ich muss derzeit wohl damit leben, dass mein WordPress am Nachmittag wegen meiner langsamen Internet-Verbindung einfach mehr oder weniger unbrauchbar ist – beziehungsweise nervt es mich so, dass mir die Lust vergeht. Solange diese Verbindung durch den Hearbeat als unterbrochen befunden wird, hängt meine komplette WordPress-Installation. Ich kann teilweise mehr als eine Minute lang gar nichts mehr machen und auch die Seite selbst nicht mehr aufrufen (auch nicht unangemeldet von einem anderen Browser aus). Ob die Seite auch für andere komplett blockiert ist, weiß ich nicht – das wäre allerdings eine sehr unschöne Situation.
Ich würde diesen Heartbeat einfach gerne abstellen. Alles andere kann man irgendwie irgendwo definieren, aber das Ding muss anscheinend laufen. Das mag auch eine wunderbare Sache sein – wenn Du eine schnelle Internet-Verbindung hast. An die Anwender mit langsamen Verbindungen oder hohen Latenzen wurde leider nicht gedacht. Ich hoffe, dieser Misstand bessert sich in künftigen Versionen wieder. Das Ding muss nicht dauernd zum Server schreien, wenn ich nichts automatisch speichern lasse.
Vielleicht finde ich irgendwann wieder Energie, dieser Sache weiter auf den Grund zu gehen. Im Moment habe ich einfach die Schnauze voll.
Das hier schonmal versucht: http://bueltge.de/wordpress-puls-heartbeat-api/2590/
Als Plugin habe ich es noch nicht versucht ... werde ich noch tun - aber heute sicher nicht mehr - schon genug geärgert ... 🙂
Ich war zu neugierig und habe es gerade mit der Plugin-Methode versucht -> neues Plugin angelegt -> Code kopiert -> Plugin aktiviert -> hilft nichts. admin-ajax.php wird weiterhin alle 15 Sekunden abgefeuert ...
Vielleicht hat es bei WordPress 3.6 so funktioniert, wie es Frank Bültge beschreibt - 3.8 scheint das zu ignorieren ... zumindest bei mir.
Ok schade, dann weiß ich auch nicht weiter. Du könntest höchstens mal den Dominik auf Twitter kontaktieren: https://twitter.com/ocean90
Der ist aktiver WordPress Core Entwickler.
Danke für den Hinweis! Das werde ich vielleicht tun. Sobald ich wieder mehr Lust habe, werde ich das aber erst in der frischen WordPress-Installation verifizieren - sonst muss ich den Fehler bei mir suchen.
Hi Jürgen,
bist du schon irgendwie weitergekommen mit diesem Problem? Ich habe es auch seit Monaten auf meiner Seite und bisher nix passendes gefunden. Serverumzug hatte ich schon durch. Habe das Problem auch nur auf einer einzigen Seite. Auf 20-30 anderen Seiten die ich pflege bzw. mal gepflegt habe ist mir dieses Problem nie untergekommen.
VG
Dennis
Hallo,
Das Problem ist bei mir von selbst wieder verschwunden. Ich kann Dir beim besten Willen aber nicht sagen, ob der Provider etwas geändert hat oder ein WP-Update verantwortlich war.
Danke für die Rückmeldung! Mal sehen wie es sich entwickelt.
Hallo,
nach langem Googeln endlich mal Jemand, der das Problem genau wie ich hat/hatte. Bei mir tritt das Problem erst auf, seit ich auf einem neuen vServer erstmals eine WP-V. 4.0 laufen habe (zuvor auf altem Server 3.9). Kann leider momentan noch keine Lösung erkennen. Werde am Problem dran bleiben müssen - dankenswerterweise auch die bisherigen Tipps nutzen - denn, ohne Lösung macht eine umfangreiche WP-Website keinen Sinn.
VG - Wolle
Gleiches Problem auch hier, hatte längere Zeit nichts an WP geändert/gearbeitet, nach einspielen des letzten Updates macht WP kein Spaß mehr.