タグ

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

  • MySQL 5.6 でのレプリケーション遅延は危険 : DSAS開発者の部屋

    MySQL 5.6 の検証中に MySQL 5.5 とは違うタイプのレプリケーション遅延を見つけたので紹介します。 MySQL のレプリケーションのおさらい MySQL のレプリケーションは次のような仕組みで動作しています。 マスターの更新トランザクションが binlog を書く スレーブの I/O スレッドがマスターに接続し、 binlog を取得し、 relaylog を書く. マスター側はスレーブからの接続を受け付けると(dump スレッド)、指定された場所から最新までの binlog を転送する binlog が追記されるのを待ってさらにスレーブに送る スレーブのSQLスレッドが relaylog を再生する MySQL 5.5 でよくあったレプリケーション遅延 マスターは並列してトランザクションを処理して、最終的にコミットした順で反映されれば問題ないようになっています。 一方、ス

    MySQL 5.6 でのレプリケーション遅延は危険 : DSAS開発者の部屋
    Kiske
    Kiske 2014/07/23
  • クエリキャッシュは切ったほうがいいんじゃなイカ? : DSAS開発者の部屋

    KLab Advent Calendar 2011 「DSAS for Social を支える技術」の2日目は、昨日に引き続き、MySQLを骨までしゃぶるためのテクニックです。 ソーシャルゲームは一般サイトよりもDBへの更新クエリの割合が多くなりがちです。更新クエリが多いMySQLでは、通常は有益なクエリキャッシュが無益どころか有害になります。 そもそもキャッシュヒット率が低い。20%以下なんてこともザラにある しかもクエリキャッシュの更新はグローバルなロックを取得する からです。特に後者は問題です。ただの参照クエリもクエリキャッシュを更新する上に、更新クエリはクエリキャッシュの全エントリをチェックして、更新したテーブルに影響がありそうな全キャッシュをdiscardしていくためです。たとえばユーザーの行動力のようなパラメータを格納した参照も更新も多いテーブルでクエリキャッシュが有効になって

    クエリキャッシュは切ったほうがいいんじゃなイカ? : DSAS開発者の部屋
    Kiske
    Kiske 2011/12/02
  • MySQL を PDO で使うときは ATTR_EMULATE_PREPARES を設定しよう : DSAS開発者の部屋

    「DSAS for Social を支える技術」 というネタでadvent calendar に挑戦します。 methane です。 PDOで MySQL を使うときは、みなさん $stmt = $con->prepare("..."); して $stmt->execute($values); とかしてプリペアドステートメントを利用されていると思います。 実は、このプリペアドステートメント、パフォーマンス的にはあまり良くありません。1つのクエリを実行するために、プレースホルダ付きのクエリを投げた後に、それに値をバインドして実行するコマンドを投げるので、1回のクエリを実行するのに2往復の通信が必要になるのです。 プリペアドステートメントにはパフォーマンスの利点(同じクエリを何度も発行するときにDBサーバーがクエリの解析を繰り返さないでもすむ)というものと、SQLインジェクション対策になる(正

    MySQL を PDO で使うときは ATTR_EMULATE_PREPARES を設定しよう : DSAS開発者の部屋
  • Apache 2.3/2.4系に実装中の新機能をちょっと先取りして見てみよう : DSAS開発者の部屋

    (追記: 続編をupしました。設定例と動作検証を行っています。→こちらへどうぞ) Apacheといえば、Webサービスを構築する上でだいたいどこかで必ずお世話になるであろう、HTTPサーバのデファクトスタンダードとして幅広く定着したソフトウェアだと思います。KLabでも各所で運用してお世話になっています。 現在、バージョンは2.2系が安定版(stable branch)となっておりますが、開発版である2.3系が既に並行して公開されているのをご存知でしょうか。新しい機能や技術を取り入れて行く為に2.2系との間の互換性を時に犠牲にしつつ、様々なチャレンジが行われているわけです。将来的にはこのバージョンが2.4系となって新しい安定版として提供されることになるでしょう。 このDSASブログでも、Apache 2.3系で取り組まれている新しい機能について着目し、面白そうなものを一つずつ取り上げながら

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

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

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

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

    Bazaarの紹介 : DSAS開発者の部屋
    Kiske
    Kiske 2008/11/11
  • 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を公開しました
    Kiske
    Kiske 2008/08/25
  • サーバ/インフラTech Meetingの報告+資料を公開します : DSAS開発者の部屋

    先週の金曜日に行われたサーバ/インフラ Tech Meetingの資料を公開します。 このを書いたわけ - ひろせまさあき(PDF, 1594KB) DSASのこれから - 安井真伸(PDF, 529KB) はてなの伊藤さん、田中さんの発表資料も既に公開されています。 サーバ/インフラ Tech Meeting の資料など - naoyaのはてなダイアリー はてなのインフラ、いまむかし @ サーバ/インフラ Tech Meeting - とあるはてな社員の日記 また、当日の動画もニコニコ動画にアップされています。cojiさんありがとうございました! サーバ/インフラ Tech Meetingの動画 - TechTalk.jp これらの資料、動画や、当日の会場の写真などは、まとめて技評さんのサイトにもアップされると思いますので、そちらもチェックしてみてください。 サーバ/インフラ Tech

    サーバ/インフラTech Meetingの報告+資料を公開します : DSAS開発者の部屋
  • memcached-1.2.4で追加されたコマンドのメモ : DSAS開発者の部屋

    なぜか最近になってまた動きが活発になってきた気がするmemcachedですが、ちょっと前(2007-12-06)にリリースされたmemcached 1.2.4からプロトコルコマンドが追加されました。 append prepend gets cas 今回は、これら新しく追加されたコマンドについて、軽く説明してみたいと思います。 なお、クライアントライブラリが新コマンドに対応していたりいなかったりするので、今回はクライアントライブラリを使用せず、直接memcachedにつないで、プロトコルをしゃべって動作を確認したいと思います。(memcachedプロトコルは、doc/protocol.txtに詳しい解説がありますのであわせて読むといいと思います) で、おしゃべるにはtelnetやncでもいいんですが、今回はsocatを使います。localhostの11211に繋ぎたい場合にこんな感じで実行す

    memcached-1.2.4で追加されたコマンドのメモ : DSAS開発者の部屋
  • DSAS開発者の部屋:ActionScript Converter '3to2' を公開します

    少し遅くなってしまいましたが、去る 11 月 27 日に開催された Tech-mobi2007 でお話させていただいた ActionScript Converter "3to2 (サントゥニー)" の講演資料とソースコードを公開させていただきます。 講 演資料: http://lab.klab.org/files/flash/asc_presentation/mobidec.xul ActionScript Converter紹介ページ: http://lab.klab.org/modules/mediawiki/index.php/3to2 ソースコー ド: http://lab.klab.org/files/flash/asc3to2.tar.gz ActionScript Converter "3to2" は、その名のとおり、 ActionScript プログラムの変換器を目指して開

    DSAS開発者の部屋:ActionScript Converter '3to2' を公開します
  • DSAS開発者の部屋:KLab勉強会#3の資料を公開します

    11/2に開催した、第3回KLab勉強会の資料と音声を公開します。 『DSASのここんとこ - ネットワークブート編』 〜 安井 真伸 (KLab株式会社) 発表資料 (PDF, 302 KB) 音声 (MP3, 39592 KB) 『Erlang による高可用システムの構築』 〜 濱野 司 (KLab株式会社) 発表資料 (PDF, 148 KB) 音声 (MP3, 30,202 KB) たくさんの方にお越しいただきありがとうございました。 おかげさまで、懇親会も含め盛況のうちに終わり、とても楽しい時間を過ごすことができました。 このまま、第4回、第5回と続けていければいいなあと思っています。 勉強会の内容や参加募集など、決まり次第このブログでアナウンスしますので、今後も購読していただければと思います。

    DSAS開発者の部屋:KLab勉強会#3の資料を公開します
    Kiske
    Kiske 2007/11/15
  • DSAS開発者の部屋:携帯ゲートウェイのIPアドレス帯更新を効率的に確認する方法

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

    DSAS開発者の部屋:携帯ゲートウェイのIPアドレス帯更新を効率的に確認する方法
    Kiske
    Kiske 2007/10/12
  • DSAS開発者の部屋:特集記事『Linuxロードバランサ構築・運用ノウハウ』を公開します

    Linuxロードバランサ構築・運用ノウハウ』を公開します! これはWEB+DB PRESS Vol.37の特集記事としてDSASチームが執筆したもので、技術評論社様の許可を得て今回公開するはこびとなりました。 一口でいうと、「Linux+IPVS+keepalivedを使って、冗長構成(Active/Backup)のロードバランサを作るまで」の解説記事で、 サーバ負荷分散一般についてのはなし Linuxでロードバランサを作ってみる ロードバランサを冗長化 といった構成になっています。 みなさんがLinuxロードバランサを導入・構築・運用する際の一助になれば、DSASチームとしてもうれしい限りですので、是非、ご覧になってください! 第1章 サーバ負荷分散概論 特集のはじめに なぜサーバ負荷分散をするのか? サーバ負荷分散の実現方法 ロードバランサのいる構成 ロードバランサはなにを元に分散す

    DSAS開発者の部屋:特集記事『Linuxロードバランサ構築・運用ノウハウ』を公開します
  • Erlang で memcached を作ってみました。 : DSAS開発者の部屋

    先日、こちらの Erlang の世界ではmemcachedとか要らない を興味深く読ませて頂きました。 たしかにクライアント側も Erlang で書かれている場合、例えばキャッシュサー バーにアクセスを行う WEB アプリケーションも Erlang で書かれていれば Erlang のプロセス間通信を使用することで簡単にキャッシュサーバを実装する ことが出来そうです。しかし、WEB アプリケーションなど、全てのシステムを Erlang で書くにはまだ私にとって勇気が要る事なので TCP/IP で memcache プ ロトコルを喋る Erlang 版 memcached を作ってみました。 その名も ememcached です。 % ememcached.erl -module(ememcached). -export([start/0, ememcached/1, process_comm

    Erlang で memcached を作ってみました。 : DSAS開発者の部屋
  • 「DSASのあれこれ」の資料を公開します : DSAS開発者の部屋

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

    「DSASのあれこれ」の資料を公開します : DSAS開発者の部屋
  • PHP Extension を作ろう第3回 - クラスを作ろう : DSAS開発者の部屋

    今回は PHP Extension でクラスを実装する方法を紹介します。 クラスと言えばオブジェクト指向によるプログラミングに欠かせないシステムであり、PHP にももちろんこの仕組みが用意されていることはご存じかと思います。 クラスを実装するにあたり、インスタンス、プロパティ、メソッドなどと言ったキーワードが登場してきますが、これらをどの様にして PHP Extension で実装していくかを見ていきましょう。 最初は PHP4 と PHP5 での PHP Extension の実装方法の違いなども紹介していくつもりだったのですが、PHP4 と PHP5 でクラスに関する仕様が大きく変わっており PHP Extension の実装方法もまた大きく異なっていることを知りました。残念ながら今回は PHP5 での実装方法に限定させた頂きます。 クラス設計 まず最初に今回どの様なクラスを作成するか

    PHP Extension を作ろう第3回 - クラスを作ろう : DSAS開発者の部屋
  • PHP Extension を作ろう第2回 - 引数と返値 : DSAS開発者の部屋

    前回の Hello World のサンプルプログラムで一通りの PHP Extension の作成手順を見てきました。しかし helloworld() の様に引数も返値も無い関数だけではプログラミング言語として不便ですので今回は PHPPHP Extension におけるデータタイプの詳細と引数、返値の渡し方について見ていきましょう。 PHP のコードから C言語で書かれたコードへとデータをやり取りする上で「型」についての疑問が浮かび上がります。動的形付けされた PHP の変数を静的に形付けされた C言語で扱うにはどうしたらよいのでしょうか。 まずは、PHP 内部でのデータ表現を知るために PHP のソースを覗いて見ましょう。 php-x.x.x/Zend/zend.h より typedef union _zvalue_value { long lval; /* long value

    PHP Extension を作ろう第2回 - 引数と返値 : DSAS開発者の部屋
  • カラフル端末で視認性を高める - grepとシェルのプロンプト編 : DSAS開発者の部屋

    このブログに含まれる「DSAS」という文字列をgrepしてみます。 どこに「DSAS」があるのかさっぱりわかりません (^^; grepの結果を| less -p DSASとかに渡せばlessがハイライトして識別しやすくなるのですが、ここはgrepのカラフル機能(--color=auto)を使ってみます。 だいぶ識別しやすくなりました。 ハイライトの色を変更するには、色指定を環境変数GREP_COLORにセットします。指定の形式は前回紹介したlsのdircolorsと同じです。例えば、太字の黄色にしたい場合はこのようにします。 export GREP_COLOR='01;33' あと、毎回--color=autoと指定するのは面倒なので、環境変数GREP_OPTIONSにセットしておきましょう。GREP_OPTIONSにセットしたオプションは、暗黙的に効果を発揮します。 export GR

    カラフル端末で視認性を高める - grepとシェルのプロンプト編 : DSAS開発者の部屋
  • PHP Extension を作ろう第1回 - まずは Hello World : DSAS開発者の部屋

    PHP で汎用的なライブラリを作成するフレームワークには大きく分けて2種類あるようです。 ひとつは PEAR のように PHP でクラスライブラリを作る方法、もう一つが今回紹介する PECL の様に PHP 自体を拡張するモジュールを書く方法です。 なぜ PHP Extension ? ひとつは、過去に C で書かれた既存のライブラリを流用したい場合に PHP Extension を作成すれば自然に PHP のコードに結合することが出来ます。また、PEAR の様に PHP で書いたコードと比べると若干高速になります。 それでは実際に helloworld という名前の PHP Extension を作成してみましょう。PHP のソースを展開すると php-x.x.x/ext というディレクトリがありますので $ cd php-x.x.x/ext $ ./ext_skel --extname

    PHP Extension を作ろう第1回 - まずは Hello World : DSAS開発者の部屋
  • DSAS開発者の部屋:こんなに簡単! Linuxでロードバランサ (1)

    DSASのロードバランサは高価なアプライアンス製品ではなく、LinuxのLVS (Linux Virtual Server)を利用しています。 安価、というか、ハードウエア以外は金銭的コストがゼロなので、一般のクライアントからのアクセスを受ける外部ロードバランサのほかに、内部サービス用のロードバランサも配置しています。それぞれactive, backupで2台ずつあるので合計で4台もロードバランサがあることになります。(こんな構成を製品を使って組んだら数千万円すっとびますね) また、ネットワークブートでディスクレスな構成にしているので、ハードディスが壊れてロードバランサがダウンした、なんてこともありません。 ですので「ロードバランサは高くてなかなか導入できない」という話を耳にする度にLVSをお勧めしているのですが、どうも、 なんか難しそう ちゃんと動くか不安 性能が出ないんじゃないか 等々

    DSAS開発者の部屋:こんなに簡単! Linuxでロードバランサ (1)
  • 1