サポート » 使い方全般 » データベース大量のINSERT処理について

  • 解決済 take3rd

    (@take3rd)


    take3rdと申します。レンタルサーバー運営会社よりレンタルサーバーのデータベースに、大量のINSERT処理により負荷をかけている状態が発生しました。とクレームを頂きました。

    wordpressのデータベース処理については全くわかりません。何がどのように悪さしているのか、当然ながら対処方法もわからず困ってしまいました。事の発端は、wordpressの表示が極端に遅くなったことです。表示するまで5分以上もかかってしまいました。

    プラグインを全てオフにしたり、デフォルトのテーマにしても遅いまま。でも、急に普通に表示されたり不安定な状態に。運営会社に連絡したら負荷をかけていると指摘された次第です。昨日から急に起こったので、なんだかわからなくなりました。

    どこをどのようにしたら良いのか?アドバイスをいただけないでしょうか?対応に与えられたのは3日間の猶予しかないので、対策したいのですが・・・。よろしくお願いいたします。m(_ _)m

    現状では普通にサイト表示されています。MySQL4なのにOPEN IDのプラグインを入れたりした事も影響あるのでしょうか?後、wordpressのページにAPIを入れ込んでいるのですが、API異常処理されると下のエラーになりますか?

    表示が重くなるまでは、ブログを更新したりページを作成していました。

    使用環境
    wordpress 2.8.5
    MySQL4
    PHP5

    運営会社からの指摘
    wordpressで行なわれている処理により、データベースに書き込みが可能な
    サイズを超える大量データの書き込みが試みられていることにより
    下記のエラーが発生致しております。

    ——————————————————————————
    WordPress データベースエラー: Got a packet bigger than ‘max_allowed_packet’
    for query INSERT INTO wp_options (option_name,option_value,autoload)
    VALUES (‘_transient_rewrite_rules’,’a:8278:{s:22:\”sitemap/([0-9]{1,})/?$\”;
    s:42:\”index.php?&pagename=sitemap&pg=$matches[1]\”;s:11:\”openid/(.+)\”;s:28
    :\”index.php?openid=$matches[1]\”;s:48:\”ngg_tag/([^/]+)/feed/(feed|rdf|rss|r
    ss2|atom)/?$\”;s:46:\”index.php?ngg_tag=$matches[1]&feed=$matches[2]\”;s:43:\
    “ngg_tag/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\”;s:46:\”index.php?ngg_tag=$matc
    hes[1]&feed=$matches[2]\”;s:36:\”ngg_tag/([^/]+)/page/?([0-9]{1,})/?$\”;s:47:
    ~(以下大量にデータあり)

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター jim912

    (@jim912)

    take3rdさん、こんにちは。

    出力されているエラーですが、MySQLが受け付けるパケットサイズを超えるリクエストがされているというものです。

    つまりは、エラーの内容は単にインサートしようとしているデータがでかすぎるということですね。
    wp_options というテーブルのoption_name,option_value,autoloadという3つの項目に_transient_rewrite_rules、a:8278:{s:22:\”sitemap/([0-9]{1,})/?$\”;(以下略)というデータを書き込もうとしています。

    ここで、wp_options というテーブルは、主にWordPress全体の設定を保存しておく場所です。option_nameを_transient_rewrite_rulesとして保存する項目はどうやら、パーマリンクの設定によりあり得るURLのパターンを保存しておくもののようです。

    take3rdさんの場合は、このパターンが8278にもなってしまい、DBのエラーが発生してしまっています。これはさすがに多いですね。このパターン数は、パーマリンクの設定、投稿・ページ・アップロードしたメディアの数によって変わってきます。

    対策としては、上記の要因を変更、つまりパーマリンクの設定を変えるか、投稿・ページ・アップロードしたメディアの数を減らすかになります。
    記録されているのは、パーマリンクによりあり得るURLのパターンですから、パーマリンク設定をデフォルトに戻してしまえば、あっさりと解決しそうな気がしますが、さすがにパラメータ付きのURLはかっこ悪いですよね。

    そこで、私のローカル環境でパーマリンク設定によるパターン数の変化を調査してみました。

    調査環境
    WP Version 2.8.4
    投稿数:5
    ページ数:10
    メディア:2(共に画像)
    postsテーブルのレコード数:58

    デフォルト:0(空)
    日付と投稿名(/%year%/%monthnum%/%day%/%postname%/):72
    月と投稿名(/%year%/%monthnum%/%postname%/):71
    数字ベース(/archives/%post_id%):69
    カスタム構造(/%post_id%/):69
    カスタム構造(/%postname%/):168
    カスタム構造(/%category%/%post_id%/):173
    カスタム構造(/%category%/%postname%/):173
    カスタム構造(/%year%/%monthnum%/%day%/%hour%%minute%%second%.html):72

    それから表示が極端に遅くなった現象ですが、パターンの保存が出来ていないために、リクエスト毎に8000超のパターンを生成している可能性があります。

    また、insertしているパターンからも分かるとおり、OPEN ID、NextGen Galleryによるパターンが存在しているようなので、これらのプラグインで多少のパターン増加が発生しているのかもしれません。

    トピック投稿者 take3rd

    (@take3rd)

    jim912さま。ご教授ありがとうございます。お忙しいところパターン数の変化を調査までしていただいて感謝です。m(_ _)m

    パーマリンクが影響するのですね。エラーコードが何を言っているのかわかりました。現状で私のサイトはページが800程度あり、最終的に2000程度まで増やすつもりでしたので、パーマリンクがデフォルトでも難しい感じですね。(ブログ記事は300程度です。)

    WordPressをページ中心に展開するつもりでしたが、どうやら難しいみたいですね。質問ですが、レンタルサーバーで転送量上限なしなどのプランがありますが、こういう内容には効果的なのでしょうか?また、CMSツールが様々ありますが、どれも同じような状況になるのでしょうか?

    wordpressでページ中心に展開を考えるのは、使い方の間違い?また、ブログ記事でも記事数が増えると問題が発生するのでしょうか?

    モデレーター jim912

    (@jim912)

    take3rdさん、こんにちは。

    パーマリンクがデフォルトでも難しい感じですね。(ブログ記事は300程度です。)

    デフォルトのパーマリンクであれば、この問題については回避できるかと思います。あとは、パラメータ付きのURLを許容できるかになるかと。

    レンタルサーバーで転送量上限なしなどのプランがありますが、こういう内容には効果的なのでしょうか?また、CMSツールが様々ありますが、どれも同じような状況になるのでしょうか?

    サーバの転送量は、アクセス数に対するものなので、全く関係ありません。

    他のCMSいついては、構造がことなるので、同様の問題が発生することは少ないと思いますが、別の箇所で問題が出ることはあるかもしれません。

    wordpressでページ中心に展開を考えるのは、使い方の間違い?また、ブログ記事でも記事数が増えると問題が発生するのでしょうか?

    間違いではありませんが、やはり元がブログツールであることもあり、投稿の方が中心的に考えられているような感は受けますね。
    投稿・ページを追加して再度パターン数を調べてみたところ、ページを追加したときのみパターンが増えていました。なので、この問題については、ページ(あとおそらくメディアも)に起因するものがほとんどのようですね。

    関連情報
    パーマリンク設定すると大量のクエリで遅い

    トピック投稿者 take3rd

    (@take3rd)

    jim912さま。

    大変わかり易いご回答ありがとうございました。Wordpressはブログ(投稿)で使用したほうが無難ですね。ページ数の増加がこのような結果になるとは夢にも思いませんでした。今まで作ったページを思うと・・・泣けてきますが、大変勉強になりました。

    この度はありがとうございました。m(_ _)m

    Can someone summarize this thread in English, please.

    モデレーター IKEDA Yuriko

    (@lilyfan)

    ウイルス感染等による不正なパーマリンク設定を行なわれている可能性はないですか?

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「データベース大量のINSERT処理について」には新たに返信することはできません。