WordPressはどのくらいうまくスケーリングしますか?
3 回答
- 投票
-
- 2010-09-01
明らかに高速Webサーバーによって提供される静的ファイルと同様にスケーリングもありません.何をロードしてからロードするかを判断する必要があるCMSは、WordPressなどの場合と同様に機能しません.問題の1つは、URLリクエストごとに必要なデータベースクエリの数です.これまで2年間、Drupalのみを使用してきましたが、現在WordPressを2年以上使用しているのは、WordPressがその部門ではるかに優れていることです.
とはいえ、ほとんど何も、どんな力でも「すぐに使える」 スケールに対応します. スケーラビリティのニーズが高まるにつれて何ができるか
がすべてです.「大量のトラフィック」のローエンドには、優れたキャッシュプラグインと安価なCDNとの統合があります. ITなしの予算と低いホスティング予算での仕事.他にもいくつか質問があります.レビューへの回答:
-
サーバーの負荷に関してWordPressを最適化する手順? - サポートプラグインを含むWordPressでのCDNのオプション?
- Amazon CloudFrontキャッシング用にWordPressを設定しますか?
パフォーマンスのボトルネックを特定するためのプロファイリングにはオプションがあります:
-
共有ホスティングにデプロイするためのWordPressウェブサイトのプロファイリング?
ボトルネックが特定されたら、 Transitions API などを使用してローカライズされた最適化を実行できます.このQ& Aは、Transients APIを使用して最適化できる例を示し、その方法を示しています.
本当に大きな銃を抜く必要な場合は、 Memcached 、 HyperDB 、 Nginx および/またはそれ以上の速度を上げる(後者はWordPressから驚くべきスケーラビリティを引き出す方法に本当に進化しているようです):
- WordPressでMemcachedを有効にする
- NginxとWPスーパーキャッシュでWordPressを高速化する方法
- HyperDB
- WordPressのフロントエンドプロキシキャッシュとしてのNginx
そして最後に、 WPエンジン<などのパフォーマンスに特化した新しいWordPressに焦点を当てたウェブホストがあります./strong> 、 ZippyKid など:
-
ベストオブブリードハイエンドのWordPressウェブホストの機能?
つまり、良いニュースはすべてのスケールが非常にうまく機能していることです.技術的な複雑さとコストを伴う無料で簡単な非常にローエンドから、トラフィックが大幅に増加するにつれてのみ増加します. WordPressから始めれば、すばらしいでしょう.トラフィックが増加し、それをかなりうまく収益化している場合は、必要に応じて拡張することは非常に費用対効果が高いことがわかります.
少なくとも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. :)
-
このような徹底的な対応に感謝します.WordPress APIはどのように機能し、ページの一部をキャッシュするのでしょうか.ログインしたユーザーやトラフィックの多いサイトでEdge Side Includesを使用する場合は、ページ全体ではなく、ユーザー固有の部分を生成するだけで済みます.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, 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 *:間違いなくそれができます.手作りのコードが必要です.フレームワークを開発して簡単にすることができるかどうかを確認したいのですが、現在は堅牢で機能豊富なカスタム投稿フィールドの実装に注力しています.多分いつかすぐに.:) * @ Voyagerfan5761 *:ありがとう.:)*@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/これにより、会話にいくつかの指標がもたらされる可能性があります.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
-
共有ホスティングにはあまり期待しないでください.共有ホストを使用している場合は、WordPressの速度が遅いと非難しないでください.共有ホストは、数千のアカウントを1つのサーバーに詰め込む場合があります.したがって、月額$ 10のアカウントを最適化するために一日中過ごすことができ、それは問題ではありません.また、マーケティングの流行語にも注意してください.「クラウド」と表示されているからといって、1台のサーバーを数百人または数千人のユーザーと共有していないわけではありません.
-
現時点では、キャッシュプラグインは必要ないと思います. WPソースコードを見ると、コアにはすでに高度なキャッシュが組み込まれています.キャッシュのキャッシュキャッシュのキャッシュ-気を付けてください、これは逆効果になる可能性があります.
-
速度が低下する主な原因はMySQLクエリが遅いことであり、WordPressをすぐに使用しても問題は発生しません.ただし、50,000以上のコメントがあったため、コメントクエリを「制限」する必要がありました. (これはまだ修正されていますか?)また、問題になる可能性のある非定型(数千のカテゴリなど)を実行している場合も問題になる可能性があります.
-
NginXでLinode512を使用しています.「top」は、PHPとNginXがリクエストごとに100分の1秒未満で作業を行っていることを示しています.ほぼすべてのCPU時間はMySQLと結びついています. 20ドルのLinodeで月に100万ページを提供できますが、プラグインと写真の追加を開始したら、「1GB」のLinodeが必要になると思います.私の見解では、それはほぼ直線的です.ページビューが2倍になる場合は、Linodeのサイズを2倍にするだけです.
免責事項:私はLinodeで働いていません.
更新(〜2年後)PHPでページの一部をキャッシュしたいので、これが私が使用する驚くほど高速な簡単なソリューションです. 100分の1秒以内に、ページごとにいくつかの個別のパーツ/部分をキャッシュしています. ramdiskはこれをさらに高速化できるようですが、私のニーズには十分高速です:
$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
WordPressを大規模に遅くするのは、最終的に3つあり、要約すると次のようになります.
- ホスティングスタック-最新のソフトウェアを備えた優れたホストが必要です-PHP7、Nginx、Varnish、Redis、fail2ban、PerconaDBはすべて適切な選択肢です
- テーブルスキャンはありません-多くのプラグインは、テーブルスキャンが何であるかさえ知らないアマチュアコーダーによって書かれています.テーブルスキャンを回避するには、使用可能なインデックスと、インデックスを使用できるように記述されたクエリの2つが必要です.
- PHPループ内のSQLクエリはないか、ほとんどありません-一部のプラグインコードは明らかに小さなサイトでのみテストされており、何らかの理由でデータベース内のすべての製品をループし、各製品/投稿に対して新しいSQL呼び出しを行います.理想的には、1ページあたり100未満のSQLクエリが必要です-多くのように聞こえますが、実際にはそうではなく、&lt; 100は、キャッシュされていない約200ミリ秒のTTFBを取得します.
上記を設定したら、キャッシュを追加できます-例:ワニス、CDN、ページキャッシュなど
スケールアウトする必要がある場合は、データベースにPerconaDB XtraDBを使用し、ファイルにUnisonを使用してクラスターを作成できます.そうすれば、1つのノードをwp-adminおよびcronランナーとして使用し、他のノードをロードバランサーの背後でWebトラフィックを処理することができます.
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.
新しいWordPressとその新機能により、WordPressは単純なブログエンジン以上の機能を備えているようです.しかし、 WordPressのスケールは1日あたり1万人から10万人のユーザーにどの程度使用されていますか?
多くのユーザーにとって、その大部分は優れたキャッシュ戦略を持つことですが、WordPressはこれを支援するためにどれだけうまく開発されており、これを簡単にし、必要な制御を提供します.Fxはページの一部をキャッシュし、ユーザーがカスタマイズした部分のみをレンダリングし、マスター/スレーブデータベースのセットアップなどをサポートできますか?