タグ

memcachedに関するfukkenのブックマーク (10)

  • memcached を使ったアプリケーションの設計について - blog.nomadscafe.jp

    クライアントからmemcachedを利用する際の、ベストプラクティスは以前書いているので、その前段階でmemcachedを含めたWebアプリケーションのアーキテクチャ(と一部クライアントの話)について今の個人的な考えをまとめてみます。Kyoto Tycoonを使ったキャッシュサーバでも基は同じだと思います 1) 使わない memcachedをアプリケーションに組み込むことで、プログラムがどうしても複雑になりがちです。データの削除や更新の際にキャッシュの更新を忘れると多くの問題が発生します。例えばユーザがニックネームやプロフィール写真を更新したのに画面上変わらないなどの現象が起こると、ユーザに対して不快な思いをさせてしまうでしょう。またデータベースが非同期のレプリケーションを行っている場合、masterに対してデータの変更をかけ、更新が反映される前にslaveから読み込んでしまい、キャッシ

  • mixi大規模障害について 解明編 - mixi engineer blog

    こんにちは、システム技術部たんぽぽGの森です。 先日のmixi大規模障害の原因となったmemcachedの不具合の詳細な解明ができました。 再来週まで発表を見合わせようと思ったのですが、早くお伝えしたほうがいいと思いましたので公開発表致します。 memcachedとlibevent memcachedはlibeventというライブラリを使用してクライアントからの要求(接続、コマンド送信)を処理しています。 libeventを使用するにはevent_baseという構造体を用います。 main threadはmain_baseを使用します。 static struct event_base *main_base; ... int main (int argc, char **argv) { ... main_base = event_init(); ... /* enter the ev

    mixi大規模障害について 解明編 - mixi engineer blog
    fukken
    fukken 2010/08/23
    綺麗に解明されたっぽいかな。
  • 第4回 memcachedのCASとmixiでの運用動向 | gihyo.jp

    今まで簡単に触れてきたmemcachedのCAS(Compare and Swap)機能ですが、今回はその具体的な使用例や、プロトコルの違いによる特徴を紹介します。また、mixiでの今後のmemcached運用動向を紹介します。 CASの概要 memcachedには特定のデータに対してアトミックな更新を試みる機能が存在します。この機能の仕組みは単純で、クライアントは特定のコマンド(テキストプロトコルの場合は“⁠gets⁠”⁠)を実行することにより、サーバから特定のレコードとその状態を表すユニークな識別子を与えられます。 この識別子はレコードが何らかの手段によって更新されると変更され、クライアントが保持している識別子とは別の値になります。したがって、クライアントは与えられた識別子を更新命令と一緒に送信することで、サーバはレコードをアトミックに更新できるかを確認することができます。もし識別子が

    第4回 memcachedのCASとmixiでの運用動向 | gihyo.jp
  • Twitter、進化するアーキテクチャ

    原文(投稿日:2009/6/26)へのリンク Twitterサービスチームの主任エンジニアであり、主に最適化とスケーラビリティを担当しているEvan Weaver氏が、QCon London 2009においてTwitterのアーキテクチャ、とりわけ過去一年にわたって行ってきたウェブサイトの最適化について語った。 Twitterで使われているツールの多くはオープンソースである。そのスタックは、フロントサイドにRails、中間のビジネス層にC、ScalaJava、データストアとしてMySQLを利用してつくられている。すべてがRAM上に保持されており、データベースは単なるバックアップである。Railsフロントエンドはレンダリング、複合キャッシュ、DBクエリ、同期的挿入を扱う。このフロントエンドは、MySQLクライアント、Memcachedクライアント、JSONクライアントなどの、多くはCで書

    Twitter、進化するアーキテクチャ
  • Windows向けのmemcachedサーバ&フロントエンド·MemCacheD Manager MOONGIFT

    memcachedはその名の通り、メモリー上にデータを保存する。そのためデータの保存/取得はとても素早く行える。反面、そこに保存されているデータはおいそれと見ることができない。もちろんmemcachedクライアントからは見られるが、一覧で取り出したりすることはできない。 サーバ設定 そのため実際にデータが保存されているか、データはどのくらいあるのかといった情報は見られず慣れるまでは多少面倒だった。だがそれを解決するのがMemCacheD Managerだ。 今回紹介するフリーウェアはMemCacheD Manager、Windows向けmemcachedサーバ&フロントエンドだ。 MemCacheD Managerはmemcachedサーバとしての役割とデータ一覧するフロントエンドとしての役割を持つソフトウェアだ。MemCacheD Manager上でmemcachedサーバを設定し、その

    Windows向けのmemcachedサーバ&フロントエンド·MemCacheD Manager MOONGIFT
    fukken
    fukken 2009/04/06
    Win用のGUI探してたとこだ
  • APCのWebインターフェースっぽいmemcacheの管理画面 - Do You PHP はてブロ

    APCのWebインターフェースではキャッシュ使用率の円グラフが表示されますが、これを元にmemcacheの管理画面を作った方がいらっしゃるようです。 For a long time I was looking for a nice web interface like the apc.php (comes with the apc’s source) that displays whole nine yards of stats. The only good tool is memcache-tool from the danga guys. It’s quite complete but I guess I’m too lazy to go on the command line. Anyways, I decided to rip write my own. Totally based

    APCのWebインターフェースっぽいmemcacheの管理画面 - Do You PHP はてブロ
  • groongaデータベースAPIについて概説 - グニャラくんのグニャグニャ備忘録@はてな

    groongaにおいて、データベースを扱うためのAPI群について概説します。 groongaは、RDBMSでいうところのテーブル・カラムを扱うAPIを提供します。 テーブルは、内部的にハッシュテーブルもしくはパトリシアトライが基となっています。 それぞれの要素について、どのような操作が行えるかを説明します。 grn_hash grn_hashとは、以下の操作を行えるAPI群です。 任意のkeyを指定したデータ保存 任意のkeyを指定したデータ取得 任意のkeyを指定したデータ削除 カーソルを用いた、全てのkey/valueの取得・設定・削除 内部の実装は、ハッシュテーブルです。 メモリ上に作成することも、ファイルとして作成することもできます。 いわゆる*DBMと同等のことができます。 Tokyo CabinetでいうところのTCHDBですね。 grn_pat grn_patとは、以下の操作

    groongaデータベースAPIについて概説 - グニャラくんのグニャグニャ備忘録@はてな
    fukken
    fukken 2009/02/23
    Key-ValueストレージはTrieとHash両方に対応。1レコードに複数の値を保持できるテーブルもあり//なるほど、転置インデックスの持ち方を工夫して速度上げる方針か、納得
  • blog.katsuma.tv

    greeさんで開催されたKey Value Store勉強会に行ってきました。 時間にして4時間超え、内容も国内のKey-Value Storeなソフトウェアの最前線の話ばかりで相当なボリューム。以下、メモってたのを残しておきたいと思います。(誤字、脱字、内容に誤りを含むものなどありましたらお伝えください)また、発表者の方やプロダクトについて、ざっくり調べてURL見つけられたものについてはリンク張っています。 森さん / 末永さん   groonga Sennaの後継エンジン 融通が効かないのがSennaのデメリット スコア算出式のカスタマイズなど Sennaの転置索引 索引の構成部品を自由に組み合わせて使える APIもいろいろ QL DB Low Level memcached互換のkey-value store バイナリのみ対応 計測 クライアント memstorm-0.6.8 mem

  • memcachedを愚弄する1つの方法 - グニャラくんのグニャグニャ備忘録@はてな

    某サービスでセッション情報を保持するために利用している memcached(repcached)に障害が起こった。 ちゃんと追えていないけど、おそらく以下のような原因。他の人がハマらないように。 障害発生まで memcached(repcached)の中には揮発したらそれなりにマズい情報が入っている。 repcachedサーバ2台のOS入れ替えをしていて、1台は再起動が成功した。 1台目のサーバへ2台目のサーバからのレプリケーションが完了したのをstatsのcurr_itemsにて確認した。 よって2台目を再起動するものの、起動しなくなった。 この時点では、1台は生きているから後でデータセンターいこうっと、という気軽な気持ちだった… 現象 生きている1台目のサーバで、以下のような現象が起こった… 値をsetする際に、ある閾値以上のexptimeを指定すると即expireされる。 その閾値は

    memcachedを愚弄する1つの方法 - グニャラくんのグニャグニャ備忘録@はてな
    fukken
    fukken 2008/10/17
    "memcachedは起動後にサーバの時間が戻ると、ものっそ怪しい挙動になる"
  • 第4回 memcachedの分散アルゴリズム | gihyo.jp

    株式会社ミクシィの長野です。第2回、第3回と前坂がmemcachedの内部について紹介しました。今回は内部構造から離れて、memcachedの分散についての紹介をいたします。 memcachedの分散 連載の1回目に紹介しましたが、memcachedは「分散」キャッシュサーバと言われていますが、サーバ側には「分散」の機能は備わっていません。サーバ側には当連載の第2回、第3回で前坂が紹介したメモリストレージの機能のみが組み込まれており、非常にシンプルな実装となっています。では、memcachedの分散はどのように実現しているのかと言うと、すべてクライアントライブラリによって実現されます。この分散方法はmemcachedの大きな特徴です。 memcachedの分散とは ここまで数度「分散」という言葉を用いてきましたが、あまり詳しく触れてきませんでした。ここでは各クライアントの実装に共通する大ま

    第4回 memcachedの分散アルゴリズム | gihyo.jp
    fukken
    fukken 2008/10/14
    キャッシュサーバをハッシュ値の剰余で割り当ててるとサーバの増減で無駄なデータ移動が発生するので、それを防ごうというアイデア
  • 1