上海渡航 ‘201310

今日から一週間、上海に行ってきます。今回でもう7回目になりますか~!

昨年同様、今年は中国東方航空にて上海経由タイバンコクを企んでいたのですが、H.I.S.の航空券予約でありえないことが。。。

H.I.S.のオンライン航空券予約なのですが、最後のクレカ決済のVISA認証サービス(Verified by VISA)画面でパスワードを入力後に、なんと「満席になりました」となって何回やっても予約できない。航空券検索にはヒットして在庫があるのに、最後の最後でNGってありえない。まあクレカからは引き落とされないので無害ではあるのですが、納得いかない。これって、もし試しにやったら登録(予約)されちゃったなんてことになりかねないし、いわば在庫確認できずに一か八か予約するようなものなので怖すぎます。後日、電話でH.I.S.に聞くとどうも中国東方、中国南方でよくあることのようで、どうも最後の航空会社へのオーダーで拒否られてしまうらしい。ありえん!
仕方なく今年はデルタで上海往復のみとなりました。まあ込3.7万円なので許すとするか、H.I.S.。

成田空港第一へ到着。デルタにてセルフサービス・チェックイン。これっていつも思うのですが、オンラインチェックインとの違いは自分で印刷するかしないかだけなので、できればオンラインチェックインですべて登録後、印刷(航空券発行)だけ空港でできるようにしてほしいなーと。この辺よく理解していないのですが、パスポートスキャンが必要であればやはりセルフ機で行う必要があるんですかね!?

今回は成田空港のマクドナルドを使いたかったので少々早めに到着。なぜかって?今マクドナルドでやってる「1個買うと1個無料」の無料クーポン券が2枚あり、出国時に使用しようかと思っていたのですが、実際使えないとゴミになるので念のため前日に電話で問い合わせたところ、無料クーポン券は使用不可のこと。但し見せるクーポンなどは使えるとのこと。電話しておいてよかった!

今日の成田空港第一は非常に空いてます。こんなに空いてる成田は初めてかもしれません。手荷物チェック、イミグレもほぼ並ばず通過。10分で出国エリアに到着。こういう日もあるんすね。

ってことでマクドナルドへ。欧米人ばかり。店員も英語で対応してます。早速「見せるクーポン」で「ペッパービーフセット」をオーダー。無問題でした。メニューをみると空港だけにやはり高めの価格設定ですね。見せるクーポンなら通常店舗と同価格、アリです。ビールとチューハイで一杯。

定刻の19:25に出発し上海へは早めの21:30に到着しました。もうこの時間になるとリニアはNG、電車も22:00なのでギリギリかNG。普通はタクシーですね。もう少しできれば23:00ぐらいまで電車が動いているとよいのですが、日本に比べればタクシーは格安なのでまあよいか!

楽天パ・リーグ初制覇

セリーグはあまり感動しなかったですが、今日の楽天優勝は感動しましたね。高校球児だった頃のユニフォームがエンジ、前草野球のユニがこれまたエンジでしたので人ごととは思えない。なおかつレプリカユニも持ってるって、楽天ファンではないですが。。。マー君の最後の投球はオールストレート、流石でした。最後の一球は私の予想はスライダー予想でしたが、渾身の直球。やはりスポーツはメンタルなんですね!おめでとう、東北楽天!
WBCをSFO観戦した身としては準決を田中で行って欲しかった!今更ですが。。。来年はメジャーで投げてるんだろうなー!
三木谷がなんで胴上げなんだとツッコミたくなりますが(どうせなら上着はユニにしろって)、とにかく今日はおめでとう!の一言。
被災地のためにも、今年はぜひ日本一になってほしい!

NextGEN Galleryプラグイン更新でサイトが遅く(重く)なる

先日、いつものようにプラグイン更新が通知されていたので、NextGEN Gallery(1.9.10⇒2.0.27)を含めいくつか更新したのですが、その後サイトが遅くなる事象が発生。結論から先に言うとNextGENが犯人だったのですが、当初はなにが悪いのかさっぱりわからず、結局調査するハメに。

■事象
ここ1週間、遅くとも表示に3秒以内で返っていたサイトが急に倍の6秒以上かかるようになった。
■調査
  1. まずはレスポンス(応答)で待たされているので、レンタルサーバの負荷ではないかと収容先に問い合わせましたが問題ないと。むしろ「CPU使用時間が長い」と指摘される始末。これには思い当たる節があるので納得。決して「CPU使用率が高い」わけではないです。「CPU使用時間が長い」原因は管理画面でDNS逆引きをしている箇所があり、ここで時間がかかっているんですね。サイトが遅い原因はここではないです。

  2. 次にターミナルでログインし、自分のプロセスをtopしながら、サイトにアクセスすると「php-cgi-mysqlx.x」プロセスが数秒かかっているのが目視でわかりました。ということはデータベース。データベースの負荷が高いか、自サイトのSQLに時間がかかっているかになりますね。こうなると普通は自サイトを疑いますよね。

  3. ってことでSQLをデバッグすることにしました。お約束?の以下の2つを追加。

    1. wp-config.php
      define ('SAVEQUERIES', true);
      
    2. footer.php
      <?php
      if (current_user_can('administrator')){
          global $wpdb;
          echo "<hr><br><pre>";
          print_r($wpdb->queries);
          echo "</pre>";
      }
      ?>
      

    おー、出ますねー。凄い量。トップの1ページだけで300以上もSQLが発行されてます。ありえんWP。まあSQLを診るとゴミみたいなSQLが山ほど発行されてます。SQLをチマチマ発行するより、一度のSQLである程度レコードをまとめて取得してphp側でゴニョゴニョするほうがほよっぽど速いですから。SQLをオブジェクトと同じ感覚でプログラミングしてるようにしか見えないですね。
    [cc lang=”dos”] Array
    (
    [0] => Array
    (
    [0] => SELECT option_value FROM options WHERE option_name = ‘rewrite_rules’ LIMIT 1
    [1] => 0.0101861953735
    [2] => require(‘wp-blog-header.php’), wp, WP->main, WP->parse_request, WP_Rewrite->wp_rewrite_rules, get_option
    )

    [1] => Array
    (
    [0] => SELECT SQL_CALC_FOUND_ROWS posts.ID FROM posts WHERE 1=1 AND posts.post_type = ‘post’ AND (posts.post_status = ‘publish’ OR posts.post_status = ‘private’) ORDER BY posts.post_date DESC LIMIT 0, 5
    [1] => 0.00300097465515
    [2] => require(‘wp-blog-header.php’), wp, WP->main, WP->query_posts, WP_Query->query, WP_Query->get_posts
    )
    ……………….
    [332] => Array
    ……………….
    [/cc]

    3回ほどアクセスしSQLデータを収集。このArrayの「[1] => 」のSQL実行時間(duration)をgrepしExcelに張り付け、グラフ化。

    すると以下の特定のテーブルのSQLが処理に時間がかかっているのがわかりました。これ、まさしくNextGenのテーブルですよね。
    [cc lang=”dos”] SELECT image_slug FROM ngg_pictures WHERE image_slug = ‘xxxxxxxxx’ AND NOT pid = 0 LIMIT 1
    [/cc]

    ってことで、やっとここでNextGENのプラグインをアップデートしたのを思い出しました。1.9.10⇒2.0.27だったのですが、なんで今頃アップデート通知されたん!?。
    1回目と2、3回目でSQL実行数が違うのはget_option()などのキャッシュが効いたものと思われます。

■対応
この後、もう少し突っ込みたかったのですが、NextGENのSQLが貧相すぎで解析意欲が削がれたので(笑)プラグインのダウングレードでお茶を濁すことにしました。本当はインデックスを張るぐらいまではしたかったのですが。。。
まあこのプラグインだけはアップデートしないことにします。やれやれ!
■追記
NextGENプラグインを元(1.9.10)に戻したら、SQLの発行数が34程度、実に約1/10に激減しました。たかがブログの1PVに330以上のSQLなんて、いくらなんでもおかしいですよね。バグの可能性ありです。後日もう一度試してみようと思います。