タグ

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

  • Redis Sentinel で冗長構成を組む際の注意点 : DSAS開発者の部屋

    KVS界隈ではすっかりおなじみ(?)のRedisですが、当社でも徐々にそのニーズが高まってきました。 標準機能として、レプリケーション、Pub/Sub、ソート等の便利機能が満載のRedisですが、サービスに投入する際に冗長構成をどう組むかといった点が気になっている方もいるのではないでしょうか。 まだまだ検証中ではあるのですが、Redisに実装されているRedisSentinelを用いて冗長構成を組んだ際にハマった所をご紹介したいと思います。 RedisSentinelとは Redisに標準実装されている機能の一つで、Redisのステータス監視、通知、自動フェイルオーバーが行なえます。 詳細な仕様、設定に関しては以下のドキュメントをご確認下さい。 http://redis.io/topics/sentinel RedisSentinel導入前の構成 特に何の変哲も無い構成です。 Redisサ

    Redis Sentinel で冗長構成を組む際の注意点 : DSAS開発者の部屋
  • innodb_support_xa と binlog の危ない関係 : DSAS開発者の部屋

    昨日の記事 で innodb_support_xa = 0にすると RDS が速くなることを紹介したのですが、その後 Twitter で innodb_support_xa = 0 にするとクラッシュ時だけでなく通常時も binlog とトランザクションログの一貫性が無くなる(コミットする順序が前後する)可能性があることを指摘していただきました。 innodb_support_xa=0すると、トランザクションがコミットされた順番でバイナリログに載ることが保証できなくなるんだけどいいのかな? DSAS開発者の部屋:AWS RDS の書き込み性能チューニング dsas.blog.klab.org/archives/52108… — ts. yokuさん (@yoku0825) 2013年4月24日 実際に、 MySQL 5.5 と 5.6 両方で、 innodb_support_xa の説明に

    innodb_support_xa と binlog の危ない関係 : DSAS開発者の部屋
    kwry
    kwry 2013/04/25
  • PHP Extensionを作ろう第4回 - Extension開発に適したPHPを用意する : DSAS開発者の部屋

    はじめまして、@hnwと申します。一部の方々に非常に人気があったシリーズ「PHP Extensionを作ろう」久々の続編です。といっても、今回はExtensionのソースコードは一行も出てきません。Extensionを作る準備段階の話題です。 PHP Extension開発時にオススメのPHPビルドオプションがあるのをご存じでしょうか。これは「拡張モジュール開発用に PHP をビルドする方法」でも紹介されているのですが、「--enable-debug --enable-maintainer-zts」というものです。 稿ではこのビルドオプションについて解説し、php-buildを利用して環境構築する方法についても紹介します。 PHPのメモリ管理の概要 まずPHPのメモリ管理について簡単に紹介します。 Apache prefork MPM+mod_phpの組み合わせを例に挙げますと、Apac

    PHP Extensionを作ろう第4回 - Extension開発に適したPHPを用意する : DSAS開発者の部屋
    kwry
    kwry 2012/10/21
  • DBサーバ向けLinuxチューニングを考える 〜 メモリオーバーコミット編 : DSAS開発者の部屋

    Cでプログラムを書いていて大量のメモリを確保したくなったとき、大抵は mallocを使うと思いますが、その際には戻り値がNULLかどうかを判断してエラー処理に飛ばすと思います。しかし、Linux のメモリ管理サブシステムには「メモリ・オーバーコミット」という機構があり、実装されているメモリ以上の領域を確保できてしまいます。 #include <stdio.h> #include <stdlib.h> int main() { int i; char *p; for(i=0;i<65536;i++){ p = (char *)malloc(65536); if(0 == (long)p){ break; } } printf("SIZE=%dMB\n",i*65536/1024/1024); return(0); } swapoff したメモリ 1G のマシンでこれを実行するとこんな感じにな

    DBサーバ向けLinuxチューニングを考える 〜 メモリオーバーコミット編 : DSAS開発者の部屋
  • SHOW PROCESSLIST を使ったカジュアルなプロファイラを強化しました : DSAS開発者の部屋

    KLab Advent Calendar 2011 「DSAS for Social を支える技術」の11日目です。 「SHOW FULL PROCESSLIST を使った MySQL のプロファイリング」 で紹介したプロファイラですが、 id:sh2 さんからはてブで 秒間10回叩く例も http://developer.cybozu.co.jp/kazuho/2009/07/mysql-539d.html 。変数ぽい部分をカットする処理はmysqldumpslowのコードを移植するといいかも というコメントをいただきました。 そろそろネタに困っていたので、 せっかくなので、多くのユースケースで 便利に使えるように改良しました。ぜひご活用ください。 myprofiler.py (gist) github 解説 クエリのサマライズ 前のバージョンでは = 以降をバッサリとカットしてしまって

    SHOW PROCESSLIST を使ったカジュアルなプロファイラを強化しました : 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開発者の部屋
  • 高負荷サイトのボトルネックを見つけるには : DSAS開発者の部屋

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

    高負荷サイトのボトルネックを見つけるには : DSAS開発者の部屋
  • 負荷試験ツール「インターネット破壊」を公開しました : DSAS開発者の部屋

    負荷試験ツール インターネット破壊を公開しました。 こちらはずっと社内で負荷試験に使用していたツールです。社内で使用していたものなので、ソーシャルアプリ向けの機能などが多少追加されていますが、もちろんんそれ以外のWebアプリケーションでも使用できます。 基的にはApache JMeterのようなWebアプリケーションむけのシナリオ負荷試験ツールです。コマンドラインオペレーションだけで実行でき、サーバー上で簡単に負荷試験を実施できるのが特徴です。POSTリクエストなどはもちろん、レスポンスのチェックやUserAgentの偽装、ランダムな値をパラメーターにセットする機能も実装しています。 注意: 当然ながら自分の管理下にないサイトに向けて負荷試験ツールを実行するのは絶対にやめてください。非常に危険です。 物騒な名前がついていますが、これは完全にわたしの小児的感性の趣味によるところです。地震で

    負荷試験ツール「インターネット破壊」を公開しました : DSAS開発者の部屋
  • 負荷分散環境でブラウザキャッシュが効かないときは - ETagの解説 - : DSAS開発者の部屋

    ETag とはなんぞやというと、Apache が返すレスポンスヘッダのひとつで、 HTTP/1.1 200 OK Date: Mon, 24 Jul 2006 06:18:07 GMT Server: Apache Last-Modified: Wed, 13 Apr 2005 21:48:55 GMT ETag: "3b-60273fc0" ←これ★ Accept-Ranges: bytes Content-Length: 59 Connection: close Content-Type: text/html オブジェクトに付与される属性です。 で、何に使うかというと、ブラウザのキャッシュ管理に使われます。 一度、http://example.jp/index.html にアクセスした後でもう一度(リロードとかで) アクセスすると、ブラウザは最初のリクエストのときに得た ETag の値

    負荷分散環境でブラウザキャッシュが効かないときは - ETagの解説 - : DSAS開発者の部屋
  • DSAS開発者の部屋:こんなに簡単! Linuxでロードバランサ (1)

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

    DSAS開発者の部屋:こんなに簡単! Linuxでロードバランサ (1)
  • ApacheのアクセスログをMessagePack形式で出力するためのモジュールを作りました : DSAS開発者の部屋

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

    ApacheのアクセスログをMessagePack形式で出力するためのモジュールを作りました : DSAS開発者の部屋
  • Apacheのアクセスログをsyslog経由で出力するためのモジュールを作りました : DSAS開発者の部屋

    皆さんは、負荷分散環境でのApacheのアクセスログをどのように取り扱ってますか? 通常、Apacheのログは動作サーバ上のローカルファイルとして出力されるので、 Webサーバを同時に何台も稼働させて負荷分散を行うような環境では、それらすべ てのWebサーバのログファイルを集めなければなりません。ローカルファイルとし て出力されるということは、Webサーバの台数分だけログファイルがばらけること を意味します。考えるだけでめんどくさいですね。 KLabでは、このApacheログを2パターンを使い分けて集めています。ひとつは syslogによるリモート出力を使い、全Webサーバからのログ出力を一か所に集中さ せる方法です。これは、CustomLogディレクティブにloggerコマンドを使用するこ とで可能です。 CustomLog "|/usr/bin/logger -p local6.inf

    Apacheのアクセスログをsyslog経由で出力するためのモジュールを作りました : DSAS開発者の部屋
  • システム管理者の心得? 〜 OpenSSLコマンドで証明書をチェック : DSAS開発者の部屋

    サーバの管理なんぞしていると、「SSLのサイト作りたいからこの証明書を設置して欲しい」などと言われることは日常茶飯事・・・とまではいきませんが普通にあることだと思います。 でも、せっかく安全に気を配ってサーバに転送して設置して設定しても、「実はもらったファイルは違う鍵ファイルだった」なんて事はありませんか? まあ・・・実際あんまりないんですけど、そんな事があったら気が滅入って寝込んでしまいそうになるので、実環境へ持って行く前に軽く動作チェックをするようにしています。 mod_ssl いれてブラウザでアクセス・・・でもいいんですが、それだと気が短い人には耐えられないので、以下のようなコマンドを叩きます。 $ openssl s_server -cert [ファイル名] -key [秘密鍵ファイル名] Using default temp DH parameters ACCEPT こうなれば成

    システム管理者の心得? 〜 OpenSSLコマンドで証明書をチェック : DSAS開発者の部屋
  • 届いたメールの料理の仕方 (1) 〜qmail編〜 : DSAS開発者の部屋

    qmailではdot-qmailと呼ばれるファイルで届いたメールの処理を制御できます。典型的なdot-qmailファイルは、ユーザのホームディレクトリの下の~/.qmailや~/.qmail-XXXですね。 今回は、dot-qmailを使う上で知っておきたいことをTIPSを交えて紹介したいと思います。 例として、kbora@klab.org宛てのメールが~kbora/.qmailに届く場合を考えます。 qmailにはextension addressというものがあり、ユーザ名に続けて「-XXX」を指定することができます。例えば、kbora-oboko@klab.org宛てのメールは、~kbora/.qmail-obokoに届きます。このextension addressを活用すれば、管理者の手を煩わすことなくメールアドレスを増やすことができますね。 では、~/.qmail-inaが無い状態

    届いたメールの料理の仕方 (1) 〜qmail編〜 : DSAS開発者の部屋
  • DSAS開発者の部屋:5分でできる、MySQLのメモリ関係のチューニング!

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

    DSAS開発者の部屋:5分でできる、MySQLのメモリ関係のチューニング!
  • 1