大規模インストール用にWordPressを最適化することについての素晴らしい投稿 がここ にあります。
手順の1つは、すばらしいと思われるがDirectAdminでは現在サポートされていないlighthttpd
です。前回、DAではないインストールに戸惑ったのですが、サーバを壊すことに成功し、それを修正するために専門家に支払う必要がありました。
その他の手順の1つは、MyISAMの代わりにInnoDBエンジンを使用するようにすべてのMySQLテーブルをALTER
することです。
いくつかの主要な問題を修正しているように見えるのでこれは私にとって魅力的です - つまりテーブルロック。以下はSQLステートメントを含む私のMySQLのSHOW PROCESSLIST;
の例です:
| 17181 | my_db | localhost | my_db | Query | 35117 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'boraras-brigittae' AND wp_po |
| 17182 | my_db | localhost | my_db | Query | 35118 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17183 | my_db | localhost | my_db | Query | 35117 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'boraras-brigittae' AND wp_po |
| 17184 | my_db | localhost | my_db | Query | 35117 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'boraras-brigittae' AND wp_po |
| 17185 | my_db | localhost | my_db | Query | 35041 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'akysis-vespa' AND wp_posts.p |
| 17186 | my_db | localhost | my_db | Query | 35050 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('images','profiledotline-gif') A |
| 17187 | my_db | localhost | my_db | Query | 35050 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('images','picarrow-gif') AND (po |
| 17188 | my_db | localhost | my_db | Query | 35043 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17189 | my_db | localhost | my_db | Query | 35041 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('m','marginal') AND (post_type = |
| 17190 | my_db | localhost | my_db | Query | 34989 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17191 | my_db | localhost | my_db | Query | 34989 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('w','wet-dry-filter') AND (post_ |
| 17192 | my_db | localhost | my_db | Query | 34990 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17193 | my_db | localhost | my_db | Query | 34954 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'corydoras-sterbai' AND wp_po |
| 17194 | my_db | localhost | my_db | Query | 34954 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17195 | my_db | localhost | my_db | Query | 34955 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17196 | my_db | localhost | my_db | Query | 34954 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17197 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17198 | my_db | localhost | my_db | Query | 34955 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17199 | my_db | localhost | my_db | Query | 34898 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17200 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17201 | my_db | localhost | my_db | Query | 34898 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums','lofiversion','index-ph |
| 17202 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17204 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17205 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'sawbwa-resplendens' AND wp_p |
| 17206 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'badis-sp-buxar' AND wp_posts |
| 17207 | my_db | localhost | my_db | Query | 34898 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'melanotaenia-boesemani' AND |
| 17208 | my_db | localhost | my_db | Query | 34898 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'betta-prima' AND wp_posts.po |
| 17209 | my_db | localhost | my_db | Query | 34865 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17210 | my_db | localhost | my_db | Query | 34897 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17211 | my_db | localhost | my_db | Query | 34898 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17213 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17214 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17215 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('knowledge-base') AND (post_type |
| 17216 | my_db | localhost | my_db | Query | 34865 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17217 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17218 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'badis-sp-buxar' AND wp_posts |
| 17219 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums','lofiversion','index-ph |
| 17220 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'betta-prima' AND wp_posts.po |
| 17221 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17222 | my_db | localhost | my_db | Query | 34865 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17223 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17224 | my_db | localhost | my_db | Query | 34865 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'hemichromis-lifalili' AND wp |
| 17225 | my_db | localhost | my_db | Query | 34864 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17226 | my_db | localhost | my_db | Query | 34862 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'apistogramma-borellii' AND w |
| 17227 | my_db | localhost | my_db | Query | 34863 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'melanotaenia-lacustris' AND |
| 17228 | my_db | localhost | my_db | Query | 34862 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'melanotaenia-lacustris' AND |
| 17229 | my_db | localhost | my_db | Query | 34861 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'mikrogeophagus-altispinosus' |
| 17230 | my_db | localhost | my_db | Query | 34861 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.ID = 25503 AND wp_posts.post_type = 'atta |
| 17231 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'piaractus-brachypomus' AND w |
| 17232 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17233 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('knowledge-base') AND (post_type |
| 17234 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17235 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17236 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17237 | my_db | localhost | my_db | Query | 34803 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17238 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('m','migrate') AND (post_type = |
| 17239 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'hemichromis-lifalili' AND wp |
| 17240 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17241 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17242 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17243 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17244 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums','lofiversion','index-ph |
| 17245 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17246 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT post_modified_gmt FROM wp_posts WHERE post_status = 'publish' AND post_type IN ('post', 'page |
| 17247 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 17248 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'geophagus-brokopondo' AND wp |
| 17249 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'hyphessobrycon-amandae' AND |
| 17253 | my_db | localhost | my_db | Query | 34788 | Waiting for table level lock | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AN |
| 17255 | my_db | localhost | my_db | Query | 34786 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('knowledge-base') AND (post_type |
| 17260 | my_db | localhost | my_db | Query | 34786 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('s','silver-sand') AND (post_typ |
| 17262 | my_db | localhost | my_db | Query | 34786 | Waiting for table level lock | SELECT ID, post_name, post_parent FROM wp_posts WHERE post_name IN ('forums') AND (post_type = 'page |
| 25505 | root | localhost | NULL | Query | 2 | NULL | SHOW PROCESSLIST
私はslow-query-log
を有効にしました、そして(分析スクリプトを通して実行された)出力はここで見つけることができます。
ただし、テーブルをALTER
にしようとしたため、wp_posts
で次のエラーが発生しました。ERROR 1214 (HY000) at line 14: The used table type doesn't support FULLTEXT indexes
だから、私の質問はちょっと3倍ですが、ちょっとだけ1つです:
* W3 Total Cache、Simple Forums、AdRotate、その他多数のプラグインがあります。
私は最近UbuntuのLAMPスタックとWordPressのインストールを試し、InnoDBまたはNGINXへの変更を検討しました。
シーンを設定するために、Next Gen Galleryプラグインを実行していたところ、テーブルが「異なる」ことに気付きました。だから私はInnoDBへの変更を調査することを考えました。
WordPressのインストールに悪影響を与えずにInnoDBを使用できますか?
まず最初に、InnoDBに変更しないでください。想像できないような方法で問題を解決します。そして、あなたはあなたのウェブサイトを最適化しようとしていて、最初からやり直す必要はありません。あなたはあなたが最初に持っているもので作業する方が得策です。
何が起きているのかを見たいのなら、テストサイトを設定して、現在のデータベースのエクスポートを同じプラグインなどを使って使用してください。DB失敗接続エラーが発生するので、SQLyogまたはSequel Proに行ってください。 SQLバックアップから復元します。
最適化
hyperDB 3つのフロントエンドサーバー、Load BalancedおよびCDNを使用して2つの2つのDBにまたがる規模のサイトをセットアップしました。 1日あたり2000同時アクセス数/ 30000人の訪問者に対して負荷テストが行われました。
これらすべては、W3 Total Cache、MemCachedサーバー、Hyper DB、およびCDNで非常にうまく管理されています。私は、中規模Webサイト用のデフォルトのmysqlプロファイルを使用しています。
私の場合、幸運なことに、内容は毎週しか変更されないので、すべてをキャッシュできます。
Apacheの最大接続数Apacheのデフォルトプロファイルでは、最大150のクライアントと最大1000の要求が許可されるため、訪問者が150人の場合、1台のサーバーで150,000の要求があります。
最大クライアント数を5または15クライアントに設定して、最大要求数を2000にします(つまり、Apacheが新しいプロセスを起動する前)。
スペアスレッドを1または2に設定 - これはApacheが予約するメモリ予約です。
Keep Aliveタイムアウトを15(15秒を意味する)に設定します。したがって、同じ要求がApacheに送信されても、新しいスレッドは開始されません。
http://www.devside.net/articles/Apache-performance-tuning を参照してください。
メモリ不足 - Apache/database/timeout
ロックされたテーブルについて私が学んだことは、データベースセッションがあまりにも長くアクティブになっていることであり、これはあなたが持っているメモリ不足を引き起こします。苦しい経験から。それは1/2コンボパンチです - あなたはより多くのデータベース接続が必要だと思うので、あなたはこれらを増やすとノック効果はDBのメモリを使い果たしています。
なぜあなたはこれ以上キャッシュできないしDBリクエストを減らすことができないのかあなたは言いませんでしたか? DBサーバーもApacheとは別のボックスにあります - それは大きな違いを生む。
mqsql.cnf
これはデフォルトでは空になります... の下でスキャンを実行します usr/share/doc/mysql-server-5.0/examples/my-medium.cnf.gz
私はmy-small.cnfから始めて、ApacheからDBを分離した後にすべて安定したことを知っています
代替PHPキャッシュ(APC)
5つの重要な最適化手順を参照してください http://www.619cloud.com/blog/5-essential-steps-for-hosting-wordpress/
あなたはおそらくAPCがあなたのサーバーで実行されていないことに気付くでしょう。 WordPress>パフォーマンス>一般の順に進み、互換性チェックをクリックしたとき、W3 Total Cacheは何を教えてくれますか?その結果は何ですか?
最後に...これは私がセットアップしたサイトと同じものです...
http://www.rackspace.com/blog/deploying-scalable-wordpress/
InnoDBへの切り替えについては、ここに非常に多くの情報があります。
https://wordpress.stackexchange.com/search?q=innodb
考えるべきことがいくつかあります:
ただし、InnoDBへの切り替えを心配する前に、より根本的な問題を解決する必要があるようです。
EXPLAIN
それらを記録する必要があります。インデックス-プラグインの一部が、データベースで順次検索を強制するクエリを実行している可能性が非常に高いです。そのような場合は、これらを高速化するインデックスを見つけて追加してください。要するに、問題の根本原因に本当に到達したとは感じられません。それをうまく処理するまで、あなたがすることは少しランダムになります。