タグ

ブックマーク / dsas.blog.klab.org (15)

  • Tornado アプリのログファイル書き込みのチューニング : DSAS開発者の部屋

    最近は協力プレイやPvPなどの「リアルタイムサーバー」を書くときは Go が主流になっているのですが、 Tornado を使ったシステムも健在です。 (以前の記事) 数人〜十数人程度の「部屋」を、1つの Tornado プロセスに複数もたせ、さらに一台のサーバーにその Tornado プロセスを複数置くことでCPUのマルチコアを活用する構成になっているのですが、最近各プロセスがログファイルを書く部分でブロックして応答性能が悪化するケースがあったので対策しました。 この記事ではその対策で行ったチューニングや、行わなかったチューニングについても紹介します。 ※なお、この記事は Tornado を題材にしていますが、似たような仕組みになっている node.js などの他の言語のフレームワークでも同じ事が言えるはずです。 前提知識 Tornado は epoll や select などのIO多重化

    Tornado アプリのログファイル書き込みのチューニング : DSAS開発者の部屋
    mickn
    mickn 2016/03/08
  • Webアプリ開発者のための MySQL 基礎研修の資料を公開します : DSAS開発者の部屋

    新卒や海外拠点の新しい Web プログラマーMySQL のインデックスや explain, トランザクションと MVCC について説明するための研修資料を作りました。特に社内情報が含まれていないのでそのまま公開します。 MySQL Bootcamp 他人に講師役を任せたり、ある程度独習もできるようにしたつもりなので、よかったらご活用ください。

    Webアプリ開発者のための MySQL 基礎研修の資料を公開します : DSAS開発者の部屋
    mickn
    mickn 2013/05/19
  • ログからは見えてこない高負荷サイトのボトルネック : DSAS開発者の部屋

    ちょうど1年前に「高負荷サイトのボトルネックを見つけるには」という記事を掲載していますが、この手のトラブルシューティングって結構大変で悩ましいですよね。はじめまして、新入りの@pandax381です。 ログからは見えてこないもの 「サイトの応答が遅い」という問題が発生した場合、その原因はどこにあるでしょうか。 Webアプリケーションの処理に時間が掛かっている DBサーバに投げたクエリーの応答が遅い サーバの処理能力を超えている などなど、いくつもの可能性があります。通常、上に挙げているような問題は、アプリケーションやサーバのログを調査することで、原因を突き止めることができます。 一方で、こういったログの調査だけでは、その原因にたどり着くことができなかったり、相当な苦労が伴うケースもあります。 あるサイトのある日の出来事 つい先日のことですが、KLabの運営している某ソーシャルゲームにて、サ

    ログからは見えてこない高負荷サイトのボトルネック : DSAS開発者の部屋
    mickn
    mickn 2012/07/07
  • Apache MPMをめぐる冒険 〜eventとpreforkを比べてみるよ〜 : DSAS開発者の部屋

    Apache 2.3からMPMの切替が実行時(起動時)に設定ファイルから動的に選択できるようになる点について、以前当DSASブログ内の記事で紹介しました。このMPMの切替によってどのようなメリットを得られるのでしょうか。実際にこれを動かしてみたときのCPU使用率とネットワークI/Oの変化を見ながら、それぞれのMPMモジュールの性能・特性を比較してみたいと思います。 まずは実験です。以下のような環境を用意しました。クライアント側については、ab(Apache Bench)によって単一のURLをひたすらダウンロードする単純なものです。しかも静的ファイルなので(中身はダミー)、純粋にApacheの転送能力のみの比較になります。サーバには、CPUはAtom D510、メインメモリ4GBを用意しました。クライアントとサーバの間はGbEで繋がっており、同一セグメント(中間ノード無し)となっております。

    Apache MPMをめぐる冒険 〜eventとpreforkを比べてみるよ〜 : DSAS開発者の部屋
    mickn
    mickn 2010/05/28
  • 「エキスパートPythonプログラミング」を翻訳しました : DSAS開発者の部屋

    昨年の12月から翻訳していた、「エキスパートPythonプログラミング」(原題「Expert Python Programming」) というが、5/31に発売になります。 エキスパートPythonプログラミング 著者:Tarek Ziade 販売元:アスキー・メディアワークス 発売日:2010-05-28 クチコミを見る まだAmazonには目次が載っていませんが、 http://dl.dropbox.com/u/284189/epp/index.html で翻訳中時点の目次を公開しています(出版されるものと若干違いがあります)。 キャッチコピーにもありますが、このPythonの入門書ではなく、 すでにある程度Pythonのプログラムを書ける人がこれから活躍していく上で必要な 知識を網羅的に習得するためのです。 コンテキストマネージャーやメタクラスなどの高度なイディオム、 パッケ

    「エキスパートPythonプログラミング」を翻訳しました : DSAS開発者の部屋
    mickn
    mickn 2010/05/26
  • Apache 2.3/2.4系に実装中の新機能をちょっと先取りして見てみよう その2 : DSAS開発者の部屋

    さて、先日のエントリでmod_auto_formとmod_sessionを用いたApacheでの新しい認証機構について紹介しましたが、今回はこれを実際に設定して動作を確認してみることにしましょう。 (※以下、バージョンは当記事執筆現在の最新です) ビルド・インストール まずはApache 2.3.5のビルドです。http://httpd.apache.org/から、"Apache 2.3.5-alpha Released"の欄を見つけたら、"Download"のリンクをたどってtarballを取得します。なお、従来であれば一緒に入っていたAPR(Apache Portable Runtime)とAPR-utilがありません。バージョン指定もそれぞれ1.3.0以上を要求しますので、インストール済みでなければそれぞれhttp://apr.apache.org/から個別に取ってくる必要があります

    Apache 2.3/2.4系に実装中の新機能をちょっと先取りして見てみよう その2 : DSAS開発者の部屋
    mickn
    mickn 2010/02/27
  • ApacheのアクセスログをMessagePack形式で出力するためのモジュールを作りました : DSAS開発者の部屋

    Apacheモジュールのログ出力、こんどはMessagePack版を作成しました。続いてはこちらをご紹介します。 Apacheのアクセスログを使い、ユーザアクセスの集計やパターン解析などというのは一般にどこでもやられていることだと思います。通常のアクセスログはテキストファイルなので、集計を行うためにスクリプト上で扱える変数・オブジェクト化が必要になりますね。1行ごとの各ログ項目を取り出すのに正規表現を使ったり、cutやawkなどを使い空白で分割するなど、色々工夫されていることと思います。 今回、MessagePack版のアクセスログ出力をやってみようと思い立ったのは、アクセスログをあらかじめ構造化済みの状態で保存しておければ、読み込みの際の解析する手間を省くことで解析処理の高速化が期待できるのではないか、そう考えたためです。MessagePackであれば、PythonRubyはじめ様々な

    ApacheのアクセスログをMessagePack形式で出力するためのモジュールを作りました : DSAS開発者の部屋
    mickn
    mickn 2009/12/24
  • Bazaarの紹介 : DSAS開発者の部屋

    私は以前までバージョン管理システムには Mercurial を利用していたのですが、 最近 Bazaar に移行しました。 先日 1.9 がリリースされましたので、これを機に Bazaar を紹介します。 現在、日で一番使われているバージョン管理システムはSubversionだと思うのですが、 最近は分散型のバージョン管理システムがオープンソース界で人気になっていて、Bazaarはその一つです。 分散型バージョン管理システムの利点はたくさん有るのですが、個人的に便利だと 感じる点は、(1)ネットワークにつながっていなくてもバージョン管理できる、(2)Subversion よりもマージが楽、(3)リポジトリのバックアップが楽、というところです。 分散型バージョン管理システムでよく使われているものに、git, Mercurial (hg), Bazaar (bzr) があります。git

    Bazaarの紹介 : DSAS開発者の部屋
    mickn
    mickn 2009/10/23
  • ss コマンド -- netstat と IPv6 アドレス : DSAS開発者の部屋

    netstat コマンドは,routing テーブルを表示したり統計を表示したりのにも使えますが,なんと言っても一番よく使うのは,現在開かれている TCP や UDP のポートの一覧を得たいときでしょう.サーバを管理する上でこの一覧は非常に重要で,日々お世話になっています.ただ,最近時々困った場面に出くわすことが度々ありました.それは,netstat コマンドで IPv6 アドレスを使ったコネクションのリストを取得しようとすると,アドレスの(表示上の)長さによっては途中でとぎれてしまうのです.これはどうやら, netstat コマンドがアドレスを表示するのに使用する文字幅が(端末の横幅に関係なく)固定になっているみたいで,その決められた幅に収まらないと省略するようなのです.そして一番問題なのは,それが省略されたアドレスなのかそうでないのかが明示されないので,表示されたアドレスが信用できない

    ss コマンド -- netstat と IPv6 アドレス : DSAS開発者の部屋
    mickn
    mickn 2009/09/07
  • DSAS開発者の部屋:ケータイやクローラの判別などに使えるmod_cidr_lookupを公開しました

    mod_cidr_lookupというApacheモジュールを公開しました。 http://lab.klab.org/wiki/Mod_cidr_lookup mod_cidr_lookupは、アクセスしてきたクライアントのIPアドレスが、指定したCIDRブロック群のいずれかにマッチするかどうかを判別するApacheモジュールです。 Apache 2.0と2.2系に対応しています。 マッチした結果は、環境変数 (X_CLIENT_TYPE) とHTTPリクエストヘッダ (X-Client-Type) にセットするので、Apache自身とバックエンドのWebアプリの両方で同じ情報を参照することができます。 このモジュールを使うメリット 簡単にクライアントの種類を知ることができる 判別処理はモジュールが行ってくれるので、のちほどお見せるように、Webアプリやhttpd.confでは環境変数やリク

    DSAS開発者の部屋:ケータイやクローラの判別などに使えるmod_cidr_lookupを公開しました
    mickn
    mickn 2008/08/25
  • Jabberサーバーをクラスタリングしてみました。 : DSAS開発者の部屋

    みなさん Jabber をご存じですか? Jabber はオープンな仕様のメッセン ジャーサービスのことで最近だと Google Talk で使用している方が多いと思 います。 KLab では 2001年ぐらいから、誰でも Jabber を使うことが出来る Jabber.JP というサービスを運用してい ます。まだ Jabber を使用したことがない方は是非こちらの「Jabber をはじめよう」 を ご覧になって Jabber を使ってみて下さい。 Jabber.JP は jabberd という実装を使用してい たのですが、冗長構成が難しいという問題がありました。 そこで先日、Jabber.JP では大規 模なメンテナンスを行い ejabberd という実装で分散、冗長化を行ってみました。ejabberd はその名の通り、Erlang で 実装された Jabber サーバーで、Mnesia

    Jabberサーバーをクラスタリングしてみました。 : DSAS開発者の部屋
  • DSAS開発者の部屋:携帯ゲートウェイのIPアドレス帯更新を効率的に確認する方法

    携帯電話各キャリアは、そのゲートウェイのIPアドレス帯域を公開しています。 DoCoMo au SoftBank WILLCOM 携帯ブラウザからのアクセスの場合、このIPアドレスがソースアドレスとなるので、アクセス制御や判別のために使っている方は多いのではないかと思います。 今回は、このIPアドレス帯の更新を効率的に確認する方法についてのお話です。 更新されたかどうかの確認だけならアンテナ系のWebサービスを使えばよいのですが、それだけだと、 どのIPアドレス帯が追加・削除されたのかわかりづらい。 IPアドレス帯のコピペが面倒くさい。 といった不満点があります。 そこでNet::CIDR::MobileJPというPerlのモジュールの出番です。(作者はモバイルファクトリという会社の方のようです) このモジュールには与えたIPアドレスが携帯かどうかを判別する機能があるのですが、次のようにす

    DSAS開発者の部屋:携帯ゲートウェイのIPアドレス帯更新を効率的に確認する方法
    mickn
    mickn 2007/10/11
  • Erlang版 memcached でレプリケーションしてみました。 : DSAS開発者の部屋

    先週お知らせした通り、Mnesia を使用した Erlang版 memcached が出来上がりました。ememcached ver 0.2 です。 前回の ets のコードも残してあったり、設定ファイルでストレージを切り替え られるようにしているうちにコードが長くなってしまいましたので以下からダ ウンロードしておためし下さい。 ダウンロード: ememcached-0.2.tar.gz 前回からの差分は以下の通りです 設定ファイルの使用 Mnesia を使用出来るようになった(etsも使えます) キャッシュデータのレプリケーション Mnesia とは Erlang の実行環境に付属する分散データベースマネジメントシ ステムです。前回紹介した ets や dets と同様に、Erlang のオブジェクトな らそのまま格納することが可能で、テーブルをメモリ上に構築するか、ディス ク上に構築す

    Erlang版 memcached でレプリケーションしてみました。 : DSAS開発者の部屋
    mickn
    mickn 2007/09/14
  • Erlang で付箋Webアプリケーションを作ってみました。 : DSAS開発者の部屋

    インターネットを見ていて、そのときの感想とかページの内容に対して思っ たことなんかを簡単に書き留めておけると便利かなと思い、適当なWebのペー ジ上にブラウザで表示したまま付箋をつけられる WEB アプリケーションを、最近流 行の Erlang 作成してみました。 付箋 Web の実験デモサイトはこちらです。 http://husen.lab.klab.org/ 付箋Webの概要は 付箋のデータは専用の付箋Webサーバ上に保存される。 ブラウザー上ではAjaxで付箋Webサーバと通信する。 ブックマークレットを使って、任意のページで付箋を使えるようにする。 実際に作成しようとすると、他人のページに、ほかのサーバのデータを使って 重ね書きするので工夫が必要になります。最初に考えたのは、IFRAMEを使って 他人のページを表示する方法でしたが、これだけだと使いづらいので、ブック マークレットを

    Erlang で付箋Webアプリケーションを作ってみました。 : DSAS開発者の部屋
    mickn
    mickn 2007/09/04
  • 「DSASのあれこれ」の資料を公開します : DSAS開発者の部屋

    そのときの発表資料と音声を公開します。 発表資料(PDF 1532KB) 音声(MP3 57350KB) ※音声はボリューム最大にしないと聞こえないかもしれません・・ごめんなさい ※資料はPDFに変換しているのでアニメーションがありません・・ごめんなさい 内容は DSASの設計思想 かたっぱしから冗長化 NICを冗長化してみよう L2SWを冗長化してみよう WEBサーバを冗長化してみよう ロードバランサも冗長化しよう メンテナンス性を重視したネットワーク構成 VLANの紹介 タグVLANの紹介 LinuxでもタグVLAN DSASの構成 フロントエンドサービス向けサーバ群の特徴 マスタサーバの特徴 Webサーバの特徴 こんな感じになっています。 おかげさまで多くの方にご参加いただき、盛況のうちに終了することができました。 懇親会もとても楽しかったです。 今回の反省点としては、、 「あれこれ

    「DSASのあれこれ」の資料を公開します : DSAS開発者の部屋
    mickn
    mickn 2007/04/04
  • 1