Wie gut skaliert WordPress?
3 Antworten
- Stimmen
-
- 2010-09-01
Esist klar,dass nichts sogut skaliert wie statische Dateien,die voneinem schnellen Webserver bereitgestellt werden,und dassjedes CMS,das herausfindenmuss,wasgeladen und danngeladen werden soll,nicht sogutfunktioniert,WordPress oder andere. Eines der Problemeist die Anzahl derpro URL-Anfrageerforderlichen Datenbankabfragen. Meine 2-jährige Erfahrungin der ausschließlichen Arbeitmit Drupal undjetztmehr als 2 Jahremit WordPressist,dass WordPressin dieser Abteilung vielbesserist.
Das heißt,fastnichts mit irgendeiner Kraft wird "out-of-the-box" skalieren; Esgeht um was können Sietun,wenn Ihre Skalierbarkeitsanforderungen steigen?
Am unteren Ende von "viel Verkehr" gibt es großartige Caching-Plugins und Integrationenmit kostengünstigen CDNs Jobmit einem No-IT-Budget undeinem niedrigen Hosting-Budget. Hier sindeinige andere Fragen & amp; Antworten zur Überprüfung:
- Schritte zur Optimierung von WordPressin Bezug auf die Serverlast?
- Optionenfür CDNmit WordPresseinschließlich unterstützender Plugins?
- WordPressfür Amazon CloudFront Caching konfigurieren?
Esgibt Optionenfür die Profilerstellung,um Leistungsengpässe zuidentifizieren. :
Sobald Engpässeerkannt wurden,können Sie lokalisierte Optimierung mit Dingen wie der Transienten-API durchführen. Diese Fragen und Antwortenenthaltenein Beispiel,dasmithilfe der Transienten-API optimiert werden kann,und zeigen,wie:
Wenn Sie wirklich diegroßen Waffen herausziehenmöchten ,können Sie Memcached , HyperDB , Nginx und/odermehr,um die Dinge zubeschleunigen (letzteres scheint sich wirklich dahingehend zuentwickeln,dass WordPresseine erstaunliche Skalierbarkeitbietet):
- Aktivieren Sie Memcachedfür Ihr WordPress
- Sobeschleunigen Sie WordPressmit Nginx und WP Super Cache
- HyperDB
- Nginx als Front-End-Proxy-Cachefür WordPress
Und schließlichgibt es aufstrebende WordPress-Webhosts,die sich auf Leistung spezialisiert haben wie WP Engine , ZippyKid und andere:
Also diegute Nachrichtist,dass alle Maßstäbe sehrgut sind ; vom sehrniedrigen Endefrei undeinfachmit technischer Komplexität und Kosten wachsennur,wenn der Verkehrerheblich wächst. Fangen Sie kleinmit WordPress an undes wirdgroßartig. Wenn Ihr Datenverkehr wächst und Sieihn sogareinigermaßengutmonetarisieren,istes sehr kosteneffektiv,ihnnach Bedarf zu skalieren.
Zumindest IMO. :)
Clearly nothing scales as well as static files served by a fast web server and any CMS that has to figure out what to load and then load it will not perform as well, WordPress or otherwise. One of the issues is the number of database queries required per URL request and my 2 prior years experience working exclusively with Drupal and now 2+ years with WordPress is that WordPress is much better in that department.
That said, almost nothing with any power is going to scale "out-of-the-box"; it's all about what can you do as your scalability needs grow?
On the low end of "lots of traffic" there are great caching plugins and integrations with inexpensive CDNs you can do a pretty good job on a no-IT budget and low hosting budget. Here are some other questions & answers to review:
- Steps to Optimize WordPress in Regard to Server Load?
- Options for CDN with WordPress Including Supporting Plugins?
- Configuring WordPress for Amazon CloudFront Caching?
There are options for profiling to identify performance bottlenecks:
Once bottlenecks are identified you can do localized optimization with things like the Transients API. This Q&A gives an example that can be optimized using Transients API and shows how:
If you thing really get want to pull out the big guns you can configure Memcached, HyperDB, Nginx and/or more to speed things up (it seems the latter is really evolving into the way to get amazing scalability out of WordPress):
- Enable Memcached for your WordPress
- How To Speed Up WordPress With Nginx And WP Super Cache
- HyperDB
- Nginx as a front-end proxy cache for WordPress
And finally there are emerging WordPress-focused webhosts specializing in performance such as WP Engine, ZippyKid and others:
So the good news is all of the scales very nicely; from the very low end of free and easy with technical complexity and cost only grow as traffic significantly grows. Start small with WordPress and it will be great. If your traffic does grow and you are monetizing it even reasonably well you'll find it very cost effect to scale as you need it.
At least IMO. :)
-
Vielen Dankfüreine sogründliche Antwort.Ichfragemich,wie die WordPress-APIsfunktionieren sollen,um Teileeiner Seite zwischenzuspeichern. Siemüssen alsonur diebenutzerspezifischen Teile undnicht diegesamte Seitefür angemeldete Benutzergenerieren oder Edge Side Includesfür Websitesmit hohem Datenaufkommen verwenden.Thanx for such a thorough response. I wonder, how is the WordPress APIs to work with, caching parts of a page - so you only need to generate the user specific parts and not the entire page for logged in users or using Edge Side Includes for the high traffic sites.
-
Mike,dubistein Biest!Überall,woich auf diese Seitegehe,stoßeich auf Ihre Antworten und sie sind allegroßartig!Mike, you are a beast! Everywhere I go on this site, I come across your answers and they're all great!
- 0
- 2010-09-02
- dgw
-
* @googletorp *: Das kannst du definitiv,esbrauchtnur handgefertigten Code.Ich würdegerne sehen,obein Frameworkentwickelt werden könnte,umeseinfacher zumachen,aberich konzentrieremich derzeit darauf,robuste undfunktionsreichebenutzerdefinierte Post-Felder zuimplementieren.Vielleichtirgendwannbald.:) * @ Voyagerfan5761 *: Danke.:) :)*@googletorp*: You definitely can do that, it just takes hand-crafted code. I'd love to see if a framework could be developed to make it easier but I'm currently focused on trying to implement robust and feature-rich custom post fields. Maybe sometime soon. :) *@Voyagerfan5761*: Thanks. :)
- 0
- 2010-09-03
- MikeSchinkel
-
http://www.kiragiannis.com/cloud-computing/comparing-managed-wordpress-hosting-providers-zippykid-vs-wpengine/Dies kanneinige Kennzahlenin die Konversationeinbringen.http://www.kiragiannis.com/cloud-computing/comparing-managed-wordpress-hosting-providers-zippykid-vs-wpengine/ This might bring some metrics to the conversation.
- 0
- 2011-11-10
- Geo
-
- 2011-02-24
-
Erwarten Sienicht viel von Shared Hosting -machen Sie WordPressnichtfür Langsamkeit verantwortlich,wenn Sie sich aufeinem Shared Hostbefinden. Freigegebene Hosts können Tausende von Konten aufeinem Server speichern. Sie können also denganzen Tag damit verbringen,ein Kontofür 10 USD/Monat zu optimieren,und das spielt keine Rolle. Achten Sie auch auf Marketing-Schlagworte -nur weil dort "Cloud" steht,heißt dasnicht,dass Sienichteinen Servermit Hunderten oder Tausenden von Menschenteilen.
-
Ich denkenicht,dass derzeit Cache-Pluginserforderlich sind. Wenn Sie sich den WP-Quellcode ansehen,ist daserweiterte Cachingbereitsim Kernintegriert. Ein Cache des Cache des Cache des Cache - Achtung,dies kann kontraproduktiv sein.
-
Die Hauptsache,die Sie verlangsamt,sind langsame MySQL-Abfragen,und WordPress Out-of-the-Box sollte Ihnen hier keine Problemebereiten. Ichmusstejedochmeine Kommentarabfragen "BEGRENZEN",daichmehr als 50.000 Kommentare hatte. (Ist das schonbehoben?) Wenn Sieetwas Atypischestun (wie z. B. Tausende von Kategorien?),Könnte diesebenfallsein Problem sein.
-
Ich verwendeeinen Linode 512mit NginX und "top" zeigt PHP und NginX,dieihre Arbeitin weniger alseiner Hundertstelsekundepro Anfrageerledigen. Fast diegesamte CPU-Zeitistmit MySQL verbunden. Sie könnten 1 Million Seitenpro Monatmit einem Linodefür 20 US-Dollarbereitstellen,aber sobald Sie Plugins und Fotos hinzufügen,benötigen Sie wahrscheinlicheinen Linodemit 1 GB. Ausmeiner Sichtistes ziemlich linear: Wenn sich die Seitenaufrufe verdoppeln,verdoppeln Sieeinfach die Größe Ihres Linode.
Haftungsausschluss: Ich arbeitenichtfür Linode.
Update (~ 2 Jahre später),da Sie Teileeiner Seitemit PHP zwischenspeichernmöchten,ist hiereine einfache Lösung,dieich verwende und die überraschend schnellist. Ich speichereinnerhalb von 1/100 Sekundemehrere separate Teile/Teilepro Seite zwischen. Scheint,als könnteeine Ramdisk diesnoch schnellermachen,aberesist schnellgenugfürmeine Bedürfnisse:
$cache_file = "./cache/portion-1". $since; // maybe round() this $since timestamp $cache_life = 1000; // seconds to keep this cached $filemtime = filemtime($cache_file); // returns FALSE if file does not exist if (!$filemtime or (time() - $filemtime >= $cache_life)) { // heavy lifting starts $output = 'Heavy!'; // heavy lifting ends if (!file_put_contents($cache_file,$output,LOCK_EX)) { echo 'error'; } // save the cache echo $output; } else { // load from cache $output = file_get_contents($cache_file); echo $output; }
Don't expect much from shared hosting--don't blame WordPress for slowness if you're on a shared host. Shared hosts might cram 1000s of accounts into one server. So you can spend all day optimizing a $10/month account and it won't matter. Also watch out for marketing buzzwords--just because it says "cloud" doesn't mean you're not sharing one server with 100s or 1000s of people.
I don't think cache plugins are necessary at this point. If you look at the WP source code, there's already advanced caching baked into the core. A cache of the cache of the cache of the cache--watch out, this can be counterproductive.
The main thing slowing you down is slow MySQL queries and WordPress out-of-the-box shouldn't give you trouble here. However, I had to "LIMIT" my comment queries because I had 50,000+ comments. (Is this fixed yet?) Also, if you're doing anything atypical (like 1000s of categories?) that could be a problem too.
I use a Linode 512 with NginX and "top" shows PHP and NginX doing their work in less than 1/100th of a second per request. Nearly all the CPU time is tied up with MySQL. You could serve 1 million pages per month with a $20 Linode, but once you start adding plugins and photos, I think you'll need a "1GB" Linode. From my point of view, it's pretty much linear: If pageviews double, just double the size of your Linode.
Disclaimer: I don't work for Linode.
Update (~2 years later) since you want to cache parts of a page with PHP, here's a simple solution that I use that's surprisingly fast. I'm caching several separate parts/portions per page within 1/100th of a second. Seems like a ramdisk could make this even faster but it's plenty fast for my needs:
$cache_file = "./cache/portion-1". $since; // maybe round() this $since timestamp $cache_life = 1000; // seconds to keep this cached $filemtime = filemtime($cache_file); // returns FALSE if file does not exist if (!$filemtime or (time() - $filemtime >= $cache_life)) { // heavy lifting starts $output = 'Heavy!'; // heavy lifting ends if (!file_put_contents($cache_file,$output,LOCK_EX)) { echo 'error'; } // save the cache echo $output; } else { // load from cache $output = file_get_contents($cache_file); echo $output; }
-
- 2017-06-12
Esgibt letztendlich drei Dinge,die WordPressim Maßstab verlangsamen,und sie laufen darauf hinaus:
- Hosting-Stack - Siebenötigeneinen guten Hostmit derneuesten Software - PHP 7,Nginx,Varnish,Redis,fail2ban und PerconaDB sindgute Optionen
- Keine Tabellenscans - Viele Plugins werden von Amateurcodiererngeschrieben,dienichteinmal wissen,wasein Tabellenscanist. Zwei Dinge sinderforderlich,um Tabellenscans zu vermeiden -ein verwendbarer Index undeine Abfrage,die sogeschriebenist,dass der Index verwendet werden kann
- Keine odernur wenige SQL-Abfragenin PHP-Schleifen -einige Plugin-Codes wurdeneindeutignur auf winzigen Websitesgetestet und durchlaufen aus demeinen oder anderen Grundjedes Produktin Ihrer Datenbank undführenfürjedes Produkt/jeden Beitrageinen neuen SQL-Aufruf durch. Idealerweisemöchten Sie weniger als 100 SQL-Abfragenpro Seite - das klingtnach viel,ist abernicht wirklich undmit & lt; 100 Sieerhalteneinen TTFB von ca. 200ms ohne Zwischenspeicher.
Sobald Sie die obengenannten Voraussetzungenerfüllt haben,können Sie das Caching hinzufügen - z. Lack,CDNs,Seiten-Caching usw.
Wenn Sie skalierenmüssen,können Siemit PerconaDB XtraDBfür die Datenbank und Unisonfür die Dateieneinen Clustererstellen. Auf diese Weise können Sie 1 Knoten als wp-admin und cron Runner haben und die anderen Knoten,die den Webverkehr hintereinem Load Balancerbedienen.
There are ultimately 3 things that slow down WordPress at scale, and they boil down to this:
- Hosting stack - you need a good host with the latest software - PHP 7, Nginx, Varnish, Redis, fail2ban and PerconaDB are all good choices
- No table scans - many plugins are written by amateur coders who do not even know what a table scan is. Two things are needed to avoid table scans - a usable index and a query written in such a way that it can use the index
- No or few SQL queries inside PHP loops - some plugin code has clearly only been tested on tiny sites, and for one reason or another will loop through every product in your database and make a fresh SQL call for each product/post. You ideally want fewer than 100 SQL queries per page - sounds like a lot, but it's not really and with < 100 you will get a TTFB of circa 200ms uncached.
Once you have the above in place, you can then add caching - e.g. Varnish, CDNs, page caching etc.
If you need to scale out, you can create a cluster using PerconaDB XtraDB for the database and Unison for the files. That way, you can have 1 node as your wp-admin and cron runner, and the other nodes serving web traffic behind a load balancer.
Mit demneuen WordPress und seinenneuen Funktionen scheint WordPress vielmehr zu können alseine einfache Blog-Engine.Aber wiegut wird die WordPress-Skalierung vonbeispielsweise 10.000 -> 100.000 Benutzernpro Tag verwendet?
Bei so vielen Benutzern wirdein großer Teil davon darinbestehen,eine gute Cache-Strategie zu haben,aber wiegutist WordPressentwickelt,um zu helfen,dies zu vereinfachen und Ihnen die Kontrolle zugeben,die Siebenötigen.Fxin der Lage,einen Teileiner Seite zwischenzuspeichern undnurbenutzerdefinierte Teile zu rendern,Master/Slave-Datenbank-Setup und ähnliches zu unterstützen?