タグ

ブックマーク / thinkit.co.jp (7)

  • PHPで並列プログラミング

    パラレルクエリの流れを確認する 「第1回:DBは習うより慣れよ!」(http://www.thinkit.co.jp/article/97/1/)では、サンプルコードにより簡単なパラレルクエリを体験していただきました。これを以下の流れに沿って、簡単におさらいしていきます。 1.あらかじめデータを細切れにする 2.処理を分割 3.手分けして同時に処理' 4.結果をまとめる 「1.あらかじめデータを細切れにする」は、サンプルのデータベースを作る段階で行っています。 サンプルでは、test0というテーブルをtest1とtest2に2分割しています。実際には、test1とtest2を作成してから、この2つをマージしてtest0を作りましたので、上記の流れとは順番が逆ですね。 このように、データを細切れにする実際の作業は、「先に全体像があって、それを細切れにする」のではなく、パラレルクエリを念頭に置

  • [Think IT] サーバが重いってどういうこと? (1/3)

    サーバが重いってどういうこと? 著者:ウノウ  尾藤 正人   2007/10/4 2007年10月の連載ランキング1位(一覧を見る) サーバ管理者だけではなく誰でも一度は経験したことがある「サーバが重い」という現象。一言で「重い」というのは簡単ですが、重いというのは具体的にどういうことなのでしょうか。 ここでいう重い・軽いは単一のベクトルで判断できるような簡単な代物ではなく、様々な要素によって発生する現象です。処理が重いからといって闇雲にハードウェアを増強するのは賢いやり方とはいえません。例えば、メモリ不足が高負荷の原因なのに、CPUを高速なものに変えても効果はほとんどないでしょう。 このような無駄な投資を避けるためにも、負荷の原因を特定して素早く対応策を講じるのはサーバ管理者にとって重要なスキルになります。記事ではサーバ負荷の特定の仕方と対策の仕方について、簡単な概要を説明します。

  • [ThinkIT] はじめてのMySQLチューニング 第3回:max_connectionsとthread_cacheのチューニングを行う (1/3)

    前回「第2回:負荷によるベンチマークを試す」の測定結果では、測定途中でmax_connectionsに達してしまい、計画していた測定を完了することができませんでした。そこでmax_connectionsを増やして、再度測定してみましょう。 max_connectionsを増やすには2通りの手段があります。まず「/etc/my.cnf」に設定を追記する方法です。設定値は450に変更します。

  • [ThinkIT] 第4回:Backend Evolution(後編) (1/2)

    前回は「リバースproxyとは」と「Webサーバーのメモリ使用率」について解説しました。今回は前回の続きとして、「HTTPのKeepAlive」と「リバースproxyの構築」について解説していきます。 話は変わって、KeepAliveです。 1つのWebページをブラウザーが表示するにあたっては、htmlに加えてページ中に配置された複数の画像やスクリプトファイル、つまり複数のドキュメントをサーバーからダウンロードする必要があります。 この複数のリクエストを取得するのに、サーバーとクライアントの間で複数のコネクションを張ってやりとりするのは効率が良くありません。 サーバー側でKeepAlive設定が有効になっている場合、クライアントは、1つ目のドキュメントのダウンロードが完了したあとも接続を維持します。これにより必要なコンテンツを1つのコネクションで取得できるようになり、クライアントから見ても

  • [ThinkIT] 第5回:サーバの追加とロードバランシング (1/2)

    さて、サービスがオープンしてしばらく経ってくるとトラフィックも増えて、アプリケーションサーバーの負荷が高くなってくることでしょう。そこで、アプリケーションサーバーを増やすことになります。同じ構成のアプリケーションサーバーをもう一台作って対応します。 ここでふと気づくわけですが、Webサーバーがproxy×1+mod_perl×1の場合は、クライアントから受け付けたリクエストを振り分けて処理するといったことは意識する必要がありませんでした。 しかし、proxy×1+mod_perl×2になると、リクエストを受け取ったリバースproxy側では、どちらのアプリケーションサーバーにリクエストを転送するかを考慮する、つまりロードバランシングをする必要が出てきます。 結論から言うと、ロードバランシングもリバースproxyでやってしまうことができます。 Apache 2.2にはmod_proxy_bal

  • [ThinkIT] 第8回:トラフィック監視(前編) (1/4)

    前回のRRDtoolsとの連携に引き続き、今回と次回の2回にわたりネットワークのトラフィック監視において必須ツールであるMRTG(Multi Router Traffic Grapher)と連携する機能拡張bbmrtg.plについて説明をしていきましょう。mrtg.plの第1回は基設定です。 これまで述べてきたBig Brother(BB)による監視は、基的にBBサーバから監視対象に稼動確認を行うポーリング監視と、サーバに対してプローブクライアントによるサーバ内部のリソース稼動監視について説明してきました。 ネットワークを監視する上では、サーバだけでなくルータ/スイッチなどネットワークそのものを構成する機器の稼動監視も重要です。ルータ/スイッチのインターフェースが稼動しているかはBBサーバからのIP死活監視機能で追うことができますが、ルータ/スイッチの通信量(トラフィック)などのリソー

  • [ThinkIT] 第7回:クエリキャッシュとキャッシュの効果 (1/3)

    PHPについては、リモートファイルの読み込みをサポートしているため、リスト9、リスト10のようなスクリプトを用意します。 リスト9:サーバー側PHPスクリプトの例(出力はSquidにキャッシュ) <?php // query_result.php // 600秒間キャッシュを許可 header('Cache-Control: public, max-age=600'); $db = pg_connect('dbname=foo'); $rec = pg_select($db, 'somedb', $_GET); // PHPがスクリプトとして読み込み可能な // 形式でレコード変数を出力 echo '<?php $rec = '; var_export($rec); echo '?>'; ?>

  • 1