タグ付けされた質問 「memory」

8
メモリのパフォーマンスを改善するためのWordpressのリファクタリング[終了]
Wordpressのメモリ消費量を詳しく見ました。私のサイトでは、すべてのプラグインを実行する快適な環境を準備するために、各ページに20MBのRAMが割り当てられているようです。このようにプロットしました。 最適化する単一の場所はなく、ほとんどのメモリを消費する悪意のある人はいません。消費はすべて、多くの多くのphpモジュールに広がっています。 Wordpressでメモリ内の環境を1回だけ初期化し、ヒットごとに何度も再利用するにはどうすればよいですか?遅いPHPでユーザーがクリックするたびに20 MBを消費させたくない-多くのメモリを搭載したサーバー上でも、すべての作業を完了するのに数秒かかります。基本的には、再利用可能な読み取り専用のメモリチャンクが必要になります。 また...なぜ20MBですか?誰でもこれに関する洞察を提供できますか? 編集:これは、開発マシンで実行されているWordpressでのWinCacheGrind出力です(共有ホスティングよりも非常に高速です)。ご覧のとおり、メインページのHTMLを生成するためだけに1秒以上かかります。共有ホスティングによって速度を落とすと、トラブルのレシピがあります。ほとんどの時間を費やす方法を選びました。これをどのように最適化しますか? 編集:これは、この素晴らしいfunctions.phpプロファイリングツールからのクエリ統計です。 ロード:12クエリ-532ms-19.1MB-43キャッシュヒット/ 53 クエリ:15クエリ-563ms-19.0MB-72キャッシュヒット/ 86 ディスプレイ:21クエリ-705ms-19.2MB-234キャッシュヒット/ 257 編集:あなたを驚かせる何かが見たいですか?index.phpの最後に次の行を挿入します。 echo "<pre>\n"; print_r(get_defined_vars()); echo "</pre>\n"; 現在の投稿の本文がメモリに保存されている回数を数えようとしました。20個のインスタンスをカウントしました。次に、PHPに参照カウントがあるため、コピーの量が3つに減ったことに気付きました。2つはWP_Queryにあり、1つはオブジェクトキャッシュにあるようです。さらに調査中です。 これが、WordPressがメモリの問題をターゲットにしたリファクタリングを必要としている理由です。メモリの消費を、それが行うことの完全な複雑さのせいにすることはできなくなりました。それは単に間違ったことをしているだけです。 編集:これを理解しようとした1日後、ここに私の発見があります: 1)すべてのメモリの88%は、require、include、またはinclude_onceタイプの呼び出しに由来します。 2)phpファイルのインクルードは、ほとんどの場合、リクエストを処理する最初の部分で発生します(当然ですが)。これは、すべてのメモリが使い果たされる場所でもあります。 3)リクエストの実行中に実行されているすべての関数をプロットすることは非常に興味深いです。合計12000を超えるコールがあります。私はそれらをより見やすくするためにジッターしました(レベル軸は基本的にスタックの深さです): 4)考えられる唯一の方法は、含まれる.phpファイルの量を最小限にすることです。関数を元のファイルごとに分割すると、多くのファイルが最大でも1回または2回ヒットしていることがわかります。それらが必要でないときにそれらをスキップする方法が必要です。たとえば、リモートデータベースバックアッププラグインはロードされて登録されますが、まったく使用されません。以下は、上記のプロットをファイル名で分割したものです。 私のブログのメモリフットプリントを30%以上削減することにつながるリファクタリングのために、私の評判すべてに値する賞金を提供しています。 編集:WP 3.1をインストールしました。これは古いバージョンとの比較です。 青はWP 3.1、赤は3.0.4です。新しいWPはより高速ですが、より多くのメモリを消費します。 インクルードファイルごとのリストを次に示します。 これにより、「オールインワンSEOパック」がどれだけのメモリを消費しているかがわかります。1つの方法は、プラグインの機能のごく一部を使用して必要なものを取得することです。また、私自身のプラグインはかなり悪いようです。 たとえば、comment.php(ブログへのコメントは許可していません)および他のいくつかの条件付きロードを試してみたいと思います。非推奨のコードをすべて削除しました。グローバルテーブルをオンデマンドでロードするためにkses.phpを削除しました。l10nを単純化し(ローカライズは行いません)、その関数がルックアップなしで文字列をすぐに返すようにしました。私が勝手に設定した30%のマークにはまだ程遠い。 編集:デフォルト設定(32MBのオペコードキャッシュ)でAPCをダウンロードして有効にしました。比較は次のとおりです。 コードの読み込みが大幅に加速され、コードのメモリ容量も少なくなっていることがわかります(おそらく、元のソースではなくオペコードだけを扱っているためです)。ただし、メモリ消費は依然として非常に高くなります。

1
75,000ページを処理するようにWordPressを構成する方法は?
WordPressを使用している大規模なサイトがあります。これまでのところ、サイトには75,000ページあり、フロントエンドでのパフォーマンスは良好です。 問題は、チームの誰かがページエディター(wp-admin / edit.php?post_type = page)に触れると、Apacheがサーバー上のすべてのメモリを使い果たすことです。 すべてのプラグインを無効にしようとしましたが、うまくいきませんでした。また、4GBのボックスを備えたライブサーバーでデバッグを試みましたが、それでもすべてのメモリを消費し、障害が発生します。 このインストールでは、20,000件の投稿もあります。wp-adminでそれらをロードしても問題はありません。すべてのページを投稿に移動する必要があるかもしれません-しかし、それはパーマリンク構造に問題を引き起こすでしょう。 大規模なWPサイトで不足している特別な設定や構成はありますか?
12 pages  memory  scale 

2
WP_Queryが不当な量のメモリをリークしている
以下の関数でWP_Query()を呼び出すたびに、Wordpressは8 MBのメモリをリークします。そして、私はこの関数を頻繁に呼び出すので、物事はかなり速く毛むくじゃらになります... :(結果の$ queryObjectの設定を解除し、定期的にwp_cache_flush()を呼び出そうとしましたが、どちらも効果がないようです。 function get_post_ids_in_taxonomies($taxonomies, &$terms=array()) { $post_ids = array(); $query = gen_query_get_posts_in_taxonomies($taxonomies, $terms); // var_dump($query); //Perform the query $queryObject = new WP_Query($query); //*****THE 8 MEGABYTES IS LEAKED HERE***** //For all posts found... if($queryObject->have_posts()) { while($queryObject->have_posts()) { $queryObject->the_post(); //Get the $post_id by capturing the output of the_ID() ob_start(); the_ID(); …

6
管理者が256MBを超えるメモリを使用する方法
今日のデジタルカメラでは通常大きい写真をアップロードする写真家のためのサイトを構築しています。画像はメモリを大量に消費します。特に、サムネイルの作成などの画像操作は重要です。 だから私は256MB以上の管理者のメモリ制限を上げたかった-これはどのように行うことができますか?CGIとPHPで最大1ギガバイトを使用することを許可しましたが、ワードプレスは常にメモリを256MBに減らします。自動更新を可能にする必要があるクライアント側でそれを修正する方法はありますか? 更新: Wordpress 3.2以降、Wordpressの最大メモリ制限が再び設定可能になります。

4
RAM使用量を節約するために、post変数からコンテンツを除外する方法はありますか?
それで、私はWP RAM使用問題のように見えるものに出会い、解決策を探しています。 私のサイトで実際にこの問題が発生している唯一の場所は、入力しようとしているサイトマップページですが、この問題の解決策は広く適用され、サイト全体のRAM使用量を節約できます。 基本的に、私はこのサイトマップのページには、すべてのリストであるpostsとpages、私のサイト上で。このページでアクセスする必要がある$ post変数の唯一の要素は、タイトルとパーマリンクです。残念ながら、私が使用しているクエリは、各$ post変数にすべての情報を含むすべての投稿を返します。 以下は、このサイトマップページで使用しているcustom-post-type、「サプリメント」というカスタム分類と「すべてのサプリメント」という用語を使用した「製品」という名前の単一のクエリの例です。サイトマップページにはそのようなクエリが複数ありますが、説明のために、この単一のクエリのコードのみを含めています。 $varArray= array( 'post_type' => 'products', 'post_status' => 'publish', 'supplements' => 'all-supplements', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC' ); $myProducts= new WP_Query($varArray); $ post変数に保存された情報の大部分(私のサイトの場合、この傾向は一般的な使用で見られると思います)は "コンテンツ"内にあります私のサイトマップページの一般的なRAMの使用は〜140MBです(デバッグバーによって報告されます)、私のサイトの他の一般的なページの使用量は50〜60 MBです。大きな違い。昨日、サイトマップページが機能しなくなり(WSOD)、それを修正するには、WPが使用できるRAMの最大量を増やす必要がありました。したがって、ページが1つしかないため、必要なシステムリソース全体を増やしています。 したがって、私は私の質問に来る。 Wordpress内のどこかに、通常のクエリのようにフェッチposts/ 取得するが取得した投稿のコンテンツを取得しないパスウェイ/オプションはありますか?pages または、代わりに、$ post変数シバン全体を取得する代わりに、特定のクエリ(Title / Permaklink / Slug / etc ...)内の特定の要素のみを取得する簡単な方法はありますか? 多くのWPアプリケーションでは、投稿/ページの「コンテンツ」が通常必要となる唯一の場所はそのpageまたはpostページ(明らかにここには例外があります)であり、投稿の完全なコンテンツにアクセスできるようです/ pagesは、他のページのクエリによって取得され、単純にやりすぎです。投稿リストページのコンテンツ全体を読み込まないようにする方法がある場合、RAMの使用量を大幅に節約できます。 任意の助けいただければ幸いです。

1
wp_generate_attachment_metadataを使用してメディアライブラリにプログラムで画像を追加すると、ランダムに失敗する
PHPバージョン5.6.12のLAMPサーバー(共有ホスティング)で最新のWordPressバージョン(4.6)を実行しています。 私がしようとしているプログラムで10枚の画像を追加するFTPでアップロード、wp-uploadsディレクトリを、メディアライブラリに 3つのWordPressの機能を使用してwp_insert_attachment、wp_generate_attachment_metadataとwp_update_attachment_metadata。 私の問題: PHPスクリプトが動作する場合があります(10個の画像すべてがメディアライブラリに正しく追加されます)。各画像のサイズは2M〜4Mです。 これまでに行ったこと: php.iniでerror_loggingを有効にすると、たまにwp_generate_attachment_metadata失敗する(つまり、5番目、6番目、7番目のイメージの処理中に)失敗し、PHPスクリプト全体が終了することがわかりました。それ以外は、error_log()からこれ以上情報を取得しません。メモリの問題が疑われたため、phpのメモリサイズを120M(私のホスティングプロバイダーから128Mに)に増やし、スクリプトの実行を100に(私のホスティングプロバイダーから120sに)しました。すべてのファイルが(もちろん)存在し、それらはすべてPNGです。そして、前述のように、テスト用に同じ10個の画像のセットを使用すると、動作する場合と動作しない場合があります... 私の質問: wp_generate_attachment_metadataWP 4.6に既知の問題がありますか?私のサイトをWP 4.3から4.6にアップグレードするまで、すべてが正常に機能していました... 十分なメモリが問題の原因である場合、Webホスティング業者から与えられた128Mのメモリ制限を処理するようにPHPスクリプトを最適化するにはどうすればよいですか? メモリ不足が原因でPHPスクリプトが終了するかどうかを確認するにはどうすればよいですか? 前もって感謝します! これが私のコードです: $post_id = 1234; $images = array('filename1.png', 'filename2.png', ... 'filename10.png'); for($i = 0; $i < 10; $i++) { $attachment = array( 'post_mime_type' => 'image/png', 'post_title' => 'my description', 'post_content' => 'my description', 'post_status' => 'inherit' ); …

3
WordPressのメモリ使用量をプロファイルする理想的な方法は何ですか?
私たちはしているWordPressのマルチサイトのインスタンスを実行している現在、30かそこらのサイトで、2台のRackspaceのクラウドサーバ上で一つのウェブと1つのデータベースを。私はNginxを静的アセットの前に置き、Apacheはすべての動的リクエストを処理します。データベースのMemcachedとPHPのAPC opコードキャッシングも構成しました。W3 Total Cacheは、すべてのサイトでデフォルトで有効になっています。 これは、1つの問題で高速です。Apacheプロセスは、通常80〜120 MBのサイズになります。Webサーバーには2 GBのメモリが搭載されています。つまり、問題が発生するまで15ほどのプロセスを取得します。プロセスは明らかにそれほど大きくあるべきではありませんが、なぜそうなのかについて私は困惑しています。 何が起こっているのかを識別するための良い戦略は何ですか? 前もって感謝します! 10/10/10更新:不思議なことに、メモリの問題の解決策はPHP xdebugを無効にすることでした(構成で誤って有効にされ、ランダムなメモリ使用量の急増を引き起こしていました)。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.