Wie viele Benutzer kann WordPress verarbeiten?


10

Ich möchte eine Anmeldeseite für Mitglieder in WP entwerfen, habe aber Zweifel, dass WordPress mehr als 40000 Benutzer in derselben Datenbank verarbeiten kann.

Da ich mir nicht sicher bin, bücke ich meine Arbeit hier. Bitte helfen Sie mir, wenn jemand genau darüber Bescheid weiß, um mein Projekt mit WP fortzusetzen.

Antworten:



5

Ich denke, Sie können noch mehr Benutzer ausführen. Das einzige, was Sie einschränken kann, ist Ihr Server. Sie müssen es richtig skalieren, insbesondere den MySQL-Server. Zum Beispiel wordpress.comlaufen noch mehr als 40000 Benutzer, aber sie verwenden besonders leistungsstarke Systeme für Stabilität, Tonnen von Load Balancern und so weiter.


5

Ein bisschen spät, um dies zu beantworten, aber da es für die relevante Suche ansteht, wird dies für jemanden von Nutzen sein:

WordPress verwendet das EAV-Datenbankschema für einen Teil seiner Datenbankimplementierung. Dies betrifft sowohl die Daten als auch die Benutzer. (Sie werden in separaten Tabellen aufbewahrt)

Um es aus Datenwinkel zu erklären:

Zusammen mit den direkt zugänglichen postbezogenen Details in wp_posts werden für jeden Beitrag zahlreiche Metas in der Tabelle wp_postmeta veröffentlicht. Alle Daten, die für den Beitrag (oder den benutzerdefinierten Beitragstyp) relevant sind.

Das Problem dabei ist, dass es bei HEAPS von Posts oder Seiten (oder benutzerdefinierten Posts / Daten) ziemlich langsam wird, nach Eigenschaften zu suchen, die in Meta gefunden werden. Sie durchsuchen zuerst alle Einträge in der Metatabelle nach den Kriterien, die Sie benötigen, und erhalten dann den entsprechenden Beitrag aus der Tabelle. Der Kicker ist, dass Sie nach JEDEM Kriterium separat suchen müssen. Bei einer Suche nach einem Tag erhalten Sie die Posts mit dem Wert X für 'meta1'. Anschließend suchen Sie nach zweiten Kriterien, z. B. customcriteria, und erhalten Post-IDs mit customcriteriavalue1 in customcriteria. Nehmen Sie dann den Schnittpunkt dieser Kriterien und gehen Sie zu get die Beitragsdetails aus der Beitragstabelle mit diesem Schnittpunkt.

Wenn Sie beispielsweise 30.000 Produkte in WooCommerce einfügen, erhalten Sie in wp_postmeta ~ 1.800.000 Zeilen, wie in der folgenden Antwort erläutert:

Post-Meta gegen separate Datenbanktabellen

Dies macht nicht nur die Suche sehr, sehr ineffizient (insbesondere, wenn Sie sich bei wp_postmeta nach mehreren Kriterien selbst verbinden), sondern auch das Abfragen einer einzelnen Zeile aus 1,8 Millionen Zeilen führt zu einem Leistungseinbruch.

EAV-Schema-Mangel.

Bei vielen Posts macht die Implementierung von WordPress db komplexe Suchvorgänge sehr langsam.

Das Ausführen einer WordPress-Site mit Tausenden von Posts ist durchaus machbar, wenn Sie Caching-Plugins verwenden. Sie können noch mehr gehen. Aber die Suche wird ein Problem sein.

............

Dies gilt auch für Benutzer - wp_usermeta verwendet ebenfalls dasselbe EAV-Format. Wenn Sie also viele Benutzer haben und viele Plugins haben, die verschiedene Benutzerdaten in wp_usermeta speichern, werden Sie den gleichen Leistungseinbruch erleiden.

Ganz zu schweigen von so vielen Benutzern, dass Sie wahrscheinlich bereits eine hohe Anzahl von Posts haben - es sei denn, Ihre App hat hauptsächlich mit Benutzern zu tun (CRM usw.) und Sie speichern Ihre Benutzerdaten in wp_usermeta anstelle von wp_postmeta . (Unwahrscheinlich).

.........

Es gibt einige Plugins, die versuchen, dieses Problem zu umgehen, wie z. B. Meta Accelerator.

https://wordpress.org/plugins/meta-accelerator/

Dieses Plugin nimmt alle Daten für einen bestimmten Beitragstyp auf und legt sie in flachen Tabellen ab. Dies beschleunigt die Suche erheblich und das Abfragen von Einzelwerten.

Aber dieses Plugin steckt noch in den Kinderschuhen.

Alternativ können Sie ElasticSearch auf dem Server installieren und das ElasticPress-Plugin oder ein anderes Plugin verwenden, das es in WordPress integriert, um solche Suchvorgänge zu beschleunigen.


3

Die Frage sollte sein, wie viele Benutzer PHP-MySQL-Stack anstelle von WordPress verarbeiten können, da WP auf diesen beiden Haupttechnologien entwickelt wird.

Wenn Sie jedoch Server mit erweiterten Servertechniken konfigurieren, WP auf einem gut verwalteten Server hosten, die Datenbank laden und Abfragen durchführen können, kann WP so viele Mitglieder verarbeiten, wie Sie möchten.

Wenn Sie WordPress in einem gemeinsam genutzten Hosting installieren, schränken Sie Ihre WP-Funktionen ein. Wenn Sie jedoch WP von einem Cloud-basierten oder dedizierten Hosting-Server aus ausführen können, sollten Sie das gewünschte Ergebnis erzielen.

Wordpress ist in der Lage, komplexe Datenbankabbrüche zu verarbeiten. Sie können diese https://codex.wordpress.org/Installing_WordPress überprüfen

Wenn Sie Wordpess auch als erweitertes Framework für die Anwendungsentwicklung verwenden, können Sie Ihre Installation für große / komplexe Datenbanklasten durchführen.

Sie können diese Serie auch überprüfen: http://code.tutsplus.com/articles/using-wordpress-for-web-application-development-wp_user_query--wp-35015

Hoffe das wird helfen. Vielen Dank


Für die Aufzeichnung ist der PHPTeil des Stapels nicht Ihr Problem (Facebook wird mit einem modifizierten PHP erstellt), könnte aber MySQLsehr gut einschränkend sein.
Dan

3

Ich habe festgestellt, dass der Flaschenhals für die Anzahl der Wordpress-Benutzer, die Sie haben können, das PHP-Timeout ist, das auf der Benutzeradministrationsseite ins Spiel kommt.

Angenommen, alle Ihre Benutzer haben mindestens eine Rolle, dann haben sie einen wp_capabilitiesEintrag in der user_metadataTabelle mit einem serialisierten Array von Rollen.

Auf der Administrationsseite wird angezeigt, wie viele Benutzer mit den einzelnen Rollentypen vorhanden sind. Daher muss jedes einzelne serialisierte Array von wp_capabilities geladen, unserialisiert und anschließend eine Gesamtanzahl angezeigt werden.

Wenn ich 300.000 Benutzer habe, dauert die Erstellung der Benutzeradministrationsseite 44 Sekunden.

Dies bedeutet, dass jeder Benutzer der Ladezeit der Seite 0,00014666666 Sekunden hinzufügt.

Angenommen, Ihr PHP-Timeout beträgt 60 Sekunden, was ein Limit von rund 400.000 Benutzern bedeuten würde.

Ich verwende jedoch einen ziemlich alten und langsamen Server. Schnellere Hardware würde die Dinge erheblich verbessern.


Ich denke nicht, dass die Auswirkungen linear sind, aber ich stimme dem Kern zu, es ist nicht so sehr die Zahl, sondern wofür Sie die Informationen tatsächlich verwenden und wo / wann Sie darauf zugreifen
Mark Kaplun
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.