タグ

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

  • phpを高速化する computed goto : DSAS開発者の部屋

    前回 インタプリタ型言語を高速化する computed goto で紹介したcomputed gotoを、「phpでも使えないの?」という声が社内であったので、 php のソースコードを見たところ、特定のビルド手順で php でも computed goto が使えることが判りました。そのビルド手法とベンチマーク結果を紹介しておきます。 php の VM のソースコードは、phpソースパッケージ中の Zend/ というディレクトリの中にあります。zend_vm_で始まる幾つかのファイルのうち、 zend_vm_execute.h というファイルが命令ディスパッチが実装されているファイルで、このファイルは zend_vm_gen.php というスクリプトで生成されています。そして、 zend_vm_gen.php のオプションで、命令ディスパッチの方法を選択できます。(phpのビルドにphp

    phpを高速化する computed goto : DSAS開発者の部屋
  • チューニンガソンで優勝してきました : DSAS開発者の部屋

    7/9(土)にチューニンガソン というイベントに参加して優勝してきたので、その報告と、何を考えてどんなチューニングをしたのかを 記憶の範囲で公開したいと思います。 今回のチューニンガソンのお題は、WordPress(ja) + php + Apache + MySQL で、 ab を使って wp-comment.php 経由でコメントのポストをすることで計測が行われました。 MySQLとApacheを立ち上げたらWordPressが動く環境が渡され、そのWordPress自体は設定ファイルを含めて 改造が一切禁止、WordPressの実行をショートカットするチートも禁止です。 0. 試合前日 環境がAWSとAMI Linuxということは事前に公開されていたため、前日にAWSに登録して少しだけAMI Linuxを 触ってみました。yumベースだけどCentOSと違って結構新しいバージョンが用

    チューニンガソンで優勝してきました : DSAS開発者の部屋
  • チューニンガソン2で2位でした : DSAS開発者の部屋

    10/1(土)にチューニンガソン2 というイベントに参加してきました。 もちろん前回に引き続き優勝を 目指していたのですが、今回は残念ながら2位でした。 今回もどんなチューニングをしていたのかの記録を公開します。 (ちなみに優勝したのは元KLabの濱野さんで、同じく メモを公開されています。) 今回のチューニンガソンのお題は、 Wikipedia の高速化で、 MediaWiki と Wikipedia の データが入った MySQL のデータには修正を加えずに、ランダムな100ページの表示速度を競いました。 マシンはメモリ1GBでデュアルコアのものが2台で、今回はWebサーバーの部分は自由に構成できます。 1. ボトルネックの確認 とりあえず AMI Linux の標準の php + apc で計測したところ、1ページの表示に1秒くらい使っています。 またphpか!ということで、やっぱり

    チューニンガソン2で2位でした : DSAS開発者の部屋
    twainy
    twainy 2011/10/10
    ああ出場してみればよかったかも
  • 高負荷サイトのボトルネックを見つけるには : DSAS開発者の部屋

    はじめに アクセスが急増すると、応答時間が著しく悪化するサイトはありませんか? 普段は200ミリ秒以内で安定してアクセスをさばいているのに、イベントやらキャンペーンやらを開始した瞬間から、普段の2倍や3倍のアクセスが殺到し、その結果、レスポンスタイムが3秒とか9秒とかかかるようになってしまうことってありますよね。 あるサイトの実状 つい先日まで、そんなサイトが私の目の前にもありました。自社で運営している某ソーシャル系のサイトなんですが、イベント開始時刻と同時にアクセス数が急増するのです。とはいえ、所詮は普段の2倍とか3倍程度の数なのだから、少なくとも1秒以内にレスポンスを返せるくらいの性能は維持したいものです。 しかし実際は困ったことに、応答に3秒以上もかかってしまう処理が大量に発生してしまう状況に陥ってしまっていました。これはきっと、どこかにボトルネックがあるに違いありません。 仮説を立

    高負荷サイトのボトルネックを見つけるには : DSAS開発者の部屋
  • 「このプログラムは正しくインストールされなかった可能性があります」を回避する方法 (Windows 7, Vista) : DSAS開発者の部屋

    (*1) このパターンでは権限昇格要求が発生しません (*2) 権限昇格されないため HKLM 配下へアンインストール情報を書き込む時点で失敗します ■ このメッセージが表示される理由 Windows Vista で登場した UAC (User Account Control) の目的のひとつは、ユーザの意図しないプロセスがログオンセッションを悪用してシステムに害を及ぼす危険を抑止することです。そのため、現在のログオンユーザが管理者権限を持っていても、あるプログラムを管理者権限で実行するためにはユーザが明示的にそれを許可する必要があります。 一方、Windows 環境へ所定のプログラムを登録することを目的とする「インストーラ」は、その性質上多くの場合システムの深部にアクセスする処理を内包しています。そのため通常は管理者権限で実行されなければなりません。そこで問題となるのは、インストーラ側が

    「このプログラムは正しくインストールされなかった可能性があります」を回避する方法 (Windows 7, Vista) : DSAS開発者の部屋
    twainy
    twainy 2010/10/02
    アンインストール情報を含まないと出るメッセージということなんですね
  • 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開発者の部屋
    twainy
    twainy 2010/05/27
  • DSASのファイル転送システムをオープンソースで公開します : DSAS開発者の部屋

    DSASのファイル転送システムを、オープンソースで公開します。 その名は、makuosan(まくおさん:通称「まくお」)っていいます。 名前は冗談っぽいですが、内容はわりと真面目です(^^; MAKUOSANプロジェクトサイト Webサイトの運用に欠かせない作業のひとつに、「デプロイ」という作業があります。 これは、新しいプログラムやデータなどをWebサーバに設置して利用できるようにす ることを指していますが、サイトの規模が大きくなってWebサーバの台数が増えると、 それに比例してファイル転送にかかる時間も長くなっていきます。 一般的な話として、サイトの規模が大きくなるほど運用コストは増大しますが、 その要因のひとつとして「デプロイ時のファイル転送に時間がかかる」という 点がありました。そこで、できるだけ運用コストを抑える(作業者の負担を減 らす)ために、独自のファイル転送システムをこしら

    DSASのファイル転送システムをオープンソースで公開します : DSAS開発者の部屋
    twainy
    twainy 2008/11/06
  • インターンシップの感想(1) : DSAS開発者の部屋

    KLab株式会社の技術インターンシップに参加しました。 インターン期間中に体験したことなどを書こうと思います。 はじめに Kラボラトリーでのインターンでは、 参加者が取り組むテーマは各自が自由に決めることができるので、 テーマ決めを最初に行いました。 私は、ネットワーク分野、特に冗長化の技術に興味があるので、 「ロードバランサ」をテーマにしました。 Linux上で、ロードバランサを構成できる「keepalived」という オープンソースソフトウェアがあるので、これを使います。 ロードバランサを実際に構成して、その動作を観察するには、 ロードバランサ体となるマシン以外にも、実際にリクエストを割り振る 複数のリアルサーバ役のマシンや、 リクエストを投げるクライアントが必要になります。 今回は、貸していただいたサーバにVMwareServerをインストールして、 仮想環境でこれらのマシンを動か

    インターンシップの感想(1) : DSAS開発者の部屋
    twainy
    twainy 2008/09/12
  • Erlang の並列処理性能をマルチプロセッサ環境で検証してみました。 : DSAS開発者の部屋

    並列処理に適したプログラミング言語 Erlang は、マルチプロセッサの環境 で効率よくパフォーマンスが向上すると言われています。そこで実際のマルチ プロセッサ環境(32CPU SMP)で様々な Erlang プログラムを走らせる検証を行ってみました。 行った検証の内容は以下の通りです。 並列ソート N-Queen 問題 検証に使用した UltraSPARC T1 プロセッサ は 8つのコア×4スレッド(CoolThreads)という構成で合計 32個の並列処理が可能となっています。なお、この Sun Fire T1000 はサン・マイクロシステムズ(株)様よりごお貸し頂きました。 詳細は以下のページにまとめてあります。 http://lab.klab.org/modules/mediawiki/index.php/Erlang_Performance

    Erlang の並列処理性能をマルチプロセッサ環境で検証してみました。 : DSAS開発者の部屋
    twainy
    twainy 2008/01/16
    大体スケールしてる。LinuxやWindowsだとどうなるんだろう
  • Python で OpenID の認証サーバーを動かしてみました : DSAS開発者の部屋

    あるサイトで OpenID の使用を検討していて、備忘録をかねてブログにまとめててみようと思い記事にしてみました。 OpenID の基的な用語説明と、OpenID 2.0 で新たに取り入れられた仕様についてまとめてみました。また、Python OpenID Library で用意されているサンプルのサーバーを動作させる方法について紹介してみたいと思います。 OpenIDに対応したサイトでユーザー登録したユーザーには、OpenID用のID(identifier:識別子)が割り当てられます。 ユーザー登録やパスワード管理などの機能を持たないサイトでは、ユーザーにこのOpenID用のIDを入力してもらい、 OpenIDの仕組みを使って安全にIDの認証と使用の認可の確認を行うことができます。 ユーザーは、認証サーバ側で認証機能を持たないサイトで、自分のアカウントが使用されることを許可する必要があ

    Python で OpenID の認証サーバーを動かしてみました : DSAS開発者の部屋
  • 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の資料を公開します
    twainy
    twainy 2007/11/13
    ネットワークブート編読んだ。ディスクレスネットワークブートサーバとか匠すぎるw/memtest86もネットワークブートw/IPMIカードがない場合はKernelパラメータに手入力
  • KLab勉強会#3 のご案内 : DSAS開発者の部屋

    第3回 KLab勉強会のお知らせです。 今回も、前回(DSASのあそこ - ストレージサーバ編)に引き続き、DSASのとある構成要素について深めに濃いめにしゃべりたいと思います。 また、最近注目しているErlangについて、その魅力や特徴をご紹介したいと思います。 開催要項 日時 2007/11/02 (金) 19:00-20:00 (18:30受付開始) 場所 KLab株式会社 第3会議室 東京都港区六木6-10-1 六木ヒルズ森タワー20F 参加費 無料 人数 30名程度 (定員になり次第、参加登録を締め切らせていただきます) ※終了後に懇親会(会費制)を予定しています セッション タイトル 『DSASのここんとこ - ネットワークブート編』 講師 安井 真伸 (KLab株式会社) 概要 DSASではネットワークブートを利用したサーバが数多く動いています。しかし、一言で「ネットワー

    KLab勉強会#3 のご案内 : DSAS開発者の部屋
    twainy
    twainy 2007/10/16
    もう締め切りか……
  • DSAS開発者の部屋:特集記事『Linuxロードバランサ構築・運用ノウハウ』を公開します

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

    DSAS開発者の部屋:特集記事『Linuxロードバランサ構築・運用ノウハウ』を公開します
    twainy
    twainy 2007/10/09
    3章まで読んだ。面白い。こういったノウハウはあんまり無いんだよなー
  • シェルスクリプトで標準入力を加工する際の注意点 : DSAS開発者の部屋

    シェルスクリプトで標準入力を加工する際に若干ハマリかけたので、今回はそのお話をしたいと思います。 みなさんのシェルスクリプトライフの一助になれば幸いです。 標準入力を加工するシェル関数、例えば、 入力を文とするメールを送るシェル関数 ログを入力として受け取り、集計や解析をするシェル関数 を書く場合、みなさんどういう風に書いているでしょうか。 私は今までこんな風に書いていました… send_mail() { from='sender@example.org' to='receiver@example.org' { echo "From: ${from}" echo "To: ${to}" echo "Subject: test" echo cat - } | qmail-inject -A -f${from} } make_mail_body | send_mail これの何が問題かという

    シェルスクリプトで標準入力を加工する際の注意点 : DSAS開発者の部屋
    twainy
    twainy 2007/07/13
  • DSAS開発者の部屋:5分でできる、MySQLのメモリ関係のチューニング!

    MySQLのチューニングにおいて非常に重要となるメモリ(バッファ)関連のパラメータについて、 チューニングのポイント DSASのとあるDBサーバ(実メモリ4GB)の実際の設定値 をまとめてみます。 また、必要メモリの総量の計算や限界値を越えてないかチェックしてくれるスクリプトも紹介します。 是非、参考にしてみてください! まず最初に注意点を。 バッファには2つのタイプがあります。 グローバルバッファ スレッドバッファ グローバルバッファはmysqld全体でそのバッファが1つだけ確保されるもので、 これに対し、 スレッドバッファはスレッド(コネクション)ごとに確保されるものです。 チューニングの際にはグローバル/スレッドの違いを意識するようにしましょう。 なぜなら、スレッドバッファに多くのメモリを割り当てると、コネクションが増えたとたんにアッという間にメモリ不足になってしまうからです。 in

    DSAS開発者の部屋:5分でできる、MySQLのメモリ関係のチューニング!
  • こんなに簡単! Linuxでロードバランサ (2) : DSAS開発者の部屋

    前回までで、 複数のWebサーバにロードバランスする というところまではできました。 これでリアルサーバへ負荷分散することができたのですが、冗長性がありませんでした。つまり、リアルサーバがダウンしても、ロードバランサはそれを認識できず、ダウンしているリアルサーバなのにパケットを送ってしまっていました。 このとき、クライアントから見ると、たまにサーバから応答がないように見えてしまいます。 というわけで今回は冗長化のお話、 リアルサーバのヘルスチェック を紹介したいと思います。 今回はkeepalivedを使います。 おおざっぱにいうと、keepalivedは2つの機能を提供します。 1. ヘルスチェック機構と連携したIPVSでのリアルサーバの管理 (--check) 前回ipvsadmコマンドを使って行ったような、バーチャルIPアドレス (VIP) やリアルサーバの管理を設定ファイルに記述す

    こんなに簡単! Linuxでロードバランサ (2) : DSAS開発者の部屋
  • DSAS開発者の部屋:いかにして冗長構成を作るか 〜DSASの場合〜

    DSASはいかにして可用性を高めているか、ちょっと紹介したいと思います。 今回は概略ということでざざざっと説明します。個別の構成についてはまた回を改めて紹介したいと思います。 │ │ ┌┴┐ ┌┴┐ │ │ │ │ISPの上位ルータ └┬┘ └┬┘ │ │ 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 責任分解点 │ │ ┌┴┐ ┌┴┐ │ ├─[ lb(active) ]─┤ │ │ ├─[ lb(backup) ]─┤ │ │ │ │ │ │L2├─[ Web ]─┤L2│ │SW├─[ Web ]─┤SW│ │ ├─[ Web ]─┤ │ │ │ │ │ │ ├─[ SMTP ]─┤ │ │ ├─[ SMTP ]─┤ │ │ │ │ │ │ ├─[ D B ]─┤ │ │ ├─[ D B ]─┤ │ │ │ │ │ │ ├─[ NFS ]─┤ │ │ ├─[ NFS ]─┤ │ │ │ │ │

    DSAS開発者の部屋:いかにして冗長構成を作るか 〜DSASの場合〜
  • 1