サーバナイトメアー・ビフォア・ H2PushPriority。

投稿アップデート情報  追記(6/18)

[2016.6.18 時点の話] 実のところ,最新の Cygwin には libev および nghttp2 が含まれているので, h2load や nghttp の機能を使うために,自分で nghttp2 をビルドする必要は無くなったのだが,それでも, nghttp2 をビルドするなら, Jansson および spdylay は, Cygwin にパッケージがないので,自分でビルドしなければならない。ただ,昨今の情勢からすると, spdylay はいらないかなとも思う。
—————————————————————————————————————————————————
 表題は,単なる遊びだから。アソビ!! 例のティム・バートンのヤツをちょいもじってみた (´ϖ`)。

 2/29 には,ハード不調のせいで,大体 0:00 から 20:30 くらいまで,自鯖が落ちていた。その前の日曜日,つまり 2/28 にものすごく一生懸命, H2PushPriority を試してたんだよね。ご存知のようにこれは, mod_http2 の新しいディレクティブだ。これを有効にするのはチョー簡単なんだが,調整は(私にとって)チョー難しい。

 このコンフィグが相当負荷になってたみたいなので,このせいで,サーバが不調になったんだと思ったんだが,実のところ, CPU のほこりのせいだった。トホホ。とにかく,悪夢であったわけ。 o6asan’s BBSo6asan の掲示板にお知らせを書いて,その日は寝ちゃった(爆)。

 で, 1 日後にサーバは無事,復帰した。 CPU のファンとシンクのとんでもない量の埃をキレーにするとともに, CMOS 用のボタン電池を取り替えた。野暮用で出かけてたんで,夜まで触れなかったわけだが,消費時間は正味 2 時間程度のモン。 FHさん, juneさん,ありがとうございました。

 改めて,サーバ・プッシュの話だが,以下の行を ssl.conf に追加してみた。
   H2PushPriority text/css before
   H2PushPriority application/javascript interleaved
 もちろん,下記も追加。ドキュメントルートの .htaccess に記入することにしたんだけどね。この css と js は Google PageSpeed Insights から最適化と削除をって助言されたヤツだ。
   Header add Link "</wp-content/~~/lightbox.min.css>;rel=preload"
   Header add Link "</wp-content/~~/responsive.css>;rel=preload"
   Header add Link "</wp-content/~~/icofont.css>;rel=preload"
   Header add Link "</wp-content/~~/jetpack.css>;rel=preload"
   Header add Link "</wp-content/~~/jquery.flexslider-min.js>;rel=preload"
   Header add Link "</wp-content/~~/tinynav.min.js>;rel=preload"
   Header add Link "</wp-content/~~/modernizr.min.js>;rel=preload"
   Header add Link "</wp-content/~~/skip-link-focus-fix.js>;rel=preload"
   Header add Link "</wp-content/~~/wp-lightbox-2.min.js>;rel=preload"
   Header add Link "</wp-content/~~/frontend.js>;rel=preload"
   Header add Link "</wp-content/~~/jquery.colorbox.js>;rel=preload"
   Header add Link "</wp-includes/~~/jquery-migrate.min.js>;rel=preload"
   Header add Link "</wp-content/~~/jquery.selection.js>;rel=preload"
   Header add Link "</wp-content/~~/style.css>;rel=preload"
   Header add Link "</wp-includes/~~/wp-embed.min.js>;rel=preload"
   Header add Link "</wp-content/~~/style.js>;rel=preload"
   Header add Link "</wp-content/~~/jquery.atd.textarea.js>;rel=preload"
   Header add Link "</wp-includes/~~/jquery.js>;rel=preload"
   Header add Link "</wp-content/~~/genericons.css>;rel=preload"

 でもねぇ,このコンフィグってどうもまずいみたい。なんか初回のアクセスのたびにひどく重くなる。連結 CSS が作られるせいらしいんだが。とにかく,初回のファースト・ペイントが遅く感じる。

 サーバ・プッシュのときって,プッシュの順番とかファイルの種類とか,いろいろあるんだろうね。 Processing Model も見てみたけど,いまだ,よくわからない。どんなふうにプッシュされてるかってのは nghttp -vnghttp -ans でわかる。 Windows 上で使ってみたかったら,ここ (x86, x64) から落として,使ってみてくだされ。 x86 の方には,以下のファイルと cyggcc_s-1.dll が x64 には,以下のファイルと cyggcc_s-seh-1.dll が含まれてまっさ:

cygcrypto-1.0.0.dll
cygev-4.dll
cygiconv-2.dll
cygjansson-4.dll
cyglzma-5.dll
cygnghttp2-14.dll
cygssl-1.0.0.dll
cygstdc++-6.dll
cygwin1.dll
cygxml2-2.dll
cygz.dll
nghttp.exe

 そんなこんなで,今のところ, H2PushPriority は使わないように,元に戻した。

[おまけ] 本日, Steffen が,OpenSSL1.0.2g でビルドの Apache 2.4.18 を出してくれたので,アップデートした。この OpenSSL Security Advisory [1st March 2016] 関連の話。

[更におまけ] 昨日, 3/3 , PHP7.0.4 が出たので,アップデートした。 ChangeLog 。ついでに, phpMyAdmin も 4.5.5.1 にした。こっちの ChangeLog 。中に,「Vulnerability allowing man-in-the-middle attack on API call to GitHub.」というのがある。ウヒッ。早くアップデートするに越したことないね。

「サーバナイトメアー・ビフォア・ H2PushPriority。」への4件のフィードバック

  1. おはようございます。

    おお!!試してみたんですね。
    すっかりnginxの方はまだなんでサーバープッシュをわすれていましたw これも早く試してみたいのだけれど、cpuの負荷が上がる可能性があるのか・・・・。
    まだまだ、http/2はテスト段階なのかな・・・。

    早くhttp/2に会社も移行したいんですけどね。

    1. くりくりさん,こんにちは。

      やっては見たんですけどねぇ。
      あまり参考になるページも見つからなくて,手探り状態です。 Sever Push をやってみたというページは,結構,散見するんですが,どれもテスト段階みたいで。一番参考になったのは, http://www.slideshare.net の H2O 関連スライドと「HTTP/2のチューニング」なんですが,どの CSS に重きを置いたらいいのか,それをサイトごとにどう自動で判断させるのか,キャッシュをうまく取り扱わせるのはどうしたらいいのかなどが,どうしても理解できませんでした。 HTTP/2 移行は問題なかったですが, Sever Push を自鯖で使うのは,私のスキルでは,ちと時期尚早のようです。

      しかし,今回いろいろとググって,なかなかに面白かったですよ。
      例えば, Apache の mod_http2 提供者 Stefan Eissing のリポが GitHub にあるのですが,ここの Apache2.4.18 リリース前の話である「Feature: Link rel=preload support for H2 push」なんかは,非常に興味深かったです。

      また, WordPress には,その名も「HTTP/2 Server Push」というプラグインがあります。もっとも,ここのサポートで「Determine already cached state」というスレッドをたてた人や「A Suggestion」というスレッドを立てた人には,一か月以上作者のリプライがついていませんので,作者も鋭意勉強中なのかもしれませんね。

  2. おはようございます。

    php7.0.4が来ましたね。
    相変わらずうちはまだバージョンアップしていません。

    >それをサイトごとにどう自動で判断させるのか,キャッシュをうまく取り扱わせるのはどうしたらいいのかなどが

    リンク先のサイトを出社前にざっとよんでみましたが、
    実装するだけかなり大変そうですね。
    自分のサイトはいいとしてもnginxとapacheと併用となる会社サーバーの実装はかなりむずかしいかな・・・。

    考えただけで頭痛が・・・。まぁでもwpのプラグインがあるだけ多少ましなかな(w

    りんく先についてですが教えて頂きありがとうございます。
    会社の方にhttp/2というお気に入りのフォルダをつくったのでそこに登録させていただきました。

    1. くりくりさん,こんばんは。

      PHP7.0.4 は夕べやりました。ついでに, phpMyAdmin も 4.5.5.1 に。こっちのほうは,「Vulnerability allowing man-in-the-middle attack on API call to GitHub.」なんてのがあって,ちょっと,気持ち悪。

      > 会社サーバーの実装はかなりむずかしいかな・・・。
      思うんですが, H2PushPriority の方はともかく, Headr add の方は,サーバ管理者が各サイトごとにやるのは,無理じゃないでしょうか。といって,ユーザの方で勝手なことやられると,レスポンスの足が引っ張られそうなので,「誰かがうまい方法を考えてくれるか,結局うまくいかなくてグズグズになるか,どっちに行くのかな」なんてことを考えました。

      ところで,本日は, DROWN 関連の話を書きましたよぉ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください