handlersocket plugin や mycached を使えば memcached は不要か、それとも使うべきケースがあるか。考察せよ [10点] kazuho (Kazuho Oku) http://twitter.com/kazuho/status/21477219149 考えて答えてみる。 HandlerSocketやmycachedを利用し、MySQLへの接続数が数万単位で行えるようになったり、より多くのクエリ数が発行できるようになっても、memcachedは不要ではないし、使うべきケースもあります。 memcachedは単なるKVSではなく、ExpiresとLRUがついたキャッシュサーバです。キャッシュオブジェクトには期限を付ける事ができ、期限が過ぎたキャッシュは無効にされ、またアクセスがされていない不要になったオブジェクトは削除され、空いたスペースは新しいキャッシュオ
こんにちは。システム本部技術部たんぽぽGの森本です 補足を追記しました (2010/08/20 15時) 先日のmixi大規模障害についての続報です 今回は小ネタはありません はじめに まず初めにtwitter/blogなどを通じて今回の問題の解析を行っていただいたみなさんに感謝の言葉を捧げたいと思います kzk_moverさん stanakaさん mala(bulkneets)さん llameradaさん (順不同) ありがとうございました 書き漏らした人ごめんなさい memcachedはすごい 今回の件でmemcachedに対して不安感を持たれた方もおられるとお聞きしました 説明不足だったせいで誤解を与えてしまい申し訳ありません きちんと設定および監視を行っていれば通常の使用にはまったく問題はありません 弊社にて -c 30万で起動したmemcachedに対して、先のテストスクリプトに
1.4系で新しく追加された主な機能しては バイナリプロトコルの導入 マルチスレッドの標準化 統計の強化 などが上げられます。この1.4系の機能の詳細については前坂徹氏の連載「memcached 1.4の到来」が参考となります。ここではバージョン1.2.5と最新の1.4.5の起動オプションを比較しながら、新しく追加された機能や実際の運用で用いられる起動オプションについて説明します。 1.2系と1.4系の起動オプションの違い まず、memcachedの起動オプションの一覧(ヘルプ)を確認しましょう。memcachedのヘルプを出力するには、「-h」オプションを使います。 $ memcached -h memcached 1.x.x -p <num> TCP port number to listen on (default: 11211) -U <num> UDP port number t
Whether you’re new to Couchbase or a longtime user, our Community Team and thousands of developers are here to accompany you on your Couchbase journey! Join the Couchbase community Explore all the ways you can connect, learn, and share with other developers. Let’s talk Couchbase Exchange ideas in real time, connect with fellow Couchbasers, and most importantly share cat photos!
memcached クライアントを実装してみて気づいたというか意識したこと。 オブジェクトのシリアライズはクライアントライブラリやユーザー任せなのだ。例えば Perl では Storable 。言うなれば汎用シリアライザ。 普段は全く意識せずに与えられた汎用シリアライザで扱えば良いと思う。 ただし格納するオブジェクトに特性があるときはカスタムシリアライザを作って空間効率を追求してみるのも面白いかも。 特性とは例えば格納するオブジェクトが 特定の種類のみ 特定の値域のみ などの場合。 より具体的には ascii 文字列だけ 数値だけを格納してその範囲は 8, 16, 32, 64bit に収まる 取り得る値が enum のように限られる など。 うまくカスタムシリアライザを作れば格納時のオブジェクトサイズをぐっと小さくできる可能性がある。 この方法に対する考えられる反論は メンテナンス性の問
原文(投稿日:2009/6/26)へのリンク Twitterサービスチームの主任エンジニアであり、主に最適化とスケーラビリティを担当しているEvan Weaver氏が、QCon London 2009においてTwitterのアーキテクチャ、とりわけ過去一年にわたって行ってきたウェブサイトの最適化について語った。 Twitterで使われているツールの多くはオープンソースである。そのスタックは、フロントサイドにRails、中間のビジネス層にC、Scala、Java、データストアとしてMySQLを利用してつくられている。すべてがRAM上に保持されており、データベースは単なるバックアップである。Railsのフロントエンドはレンダリング、複合キャッシュ、DBクエリ、同期的挿入を扱う。このフロントエンドは、MySQLクライアント、Memcachedクライアント、JSONクライアントなどの、多くはCで書
mod_libmemcached_cacheでApacheのcacheをmemcachedに保存する Apacheのmod_cacheのキャッシュ保存先にmemcachedが使えればいいのにと長年思ってきましたが、mod_libmemcached_cacheがそれを実現してくれました。 しかも、libmemcachedを利用しているので、性能も高く、またConsitent Hashingも使えますし、バイナリプロトコルもばっちりです。 図にするとこんな感じ。revserse proxyのcacheがmemcachedになるので、cache効率が上がり、またApplicationサーバからも同じmemcachedが参照できるのでcacheを変更したりできるかもしれません。 導入 mod_libmemcached_cacheはgithubから入手できます http://github.com/a
昨日のダサい失敗エントリが注目を集めているようで恥ずかしいお… 今後ダサい失敗で困らないために、memcachedのパッチを書いてみようと思った。 時間が巻き戻った瞬間に障害が出るのはしょうがないけど、 巻き戻ったあとにその影響が残り続けるのは嬉しくない。 昨日起きた現象を考えるに、 「memcached内部での時間は、絶対時間で保持しているのではなく起動時間からの相対時間で保持されている」のだろう、と予想していた。実際そうみたい。 current_timeという変数に、現在の起動時間からの相対秒が記録されている(set_curent_time())。 realtime()では、各種コマンドで与えられるexptimeを起動時間からの相対秒に変換している。 #define REALTIME_MAXDELTA 60*60*24*30 typedef unsigned int rel_time_
こんにちは、某Perl界隈のIRCチャンネルでPythonがマイブーム的なKY誤爆をしてしまったtmaesakaです。 先日、以前から興味のあったGoogle App EngineとMemcache APIについて少し調べ、こちらに英文で報告したのですが、今日は日本語で要約したまとめを紹介します。 まず軽く前置きですがGoogle App Engine (GAE)とは、Googleが提供しているウェブアプリケーションをGoogleのインフラ上でスケーリングや冗長化など、ある程度のノウハウや資金を要求される面倒な事を気にせずに運営できるプラットフォームです。つまり、典型的なPaaSの例であり、サービスの運営コストをelastic(伸縮)にします。昨今バズワード化しつつあるクラウドコンピューティングの一種でもあります。 GAEのインフラはGoogleより提供されているAPIセットを用いて利用し
最近じゃmemcachedを活用してデータベース(RDB)の負荷を下げるって話、そこらじゅうから聞こえてくるけれど、memcachedの活用は、格納オブジェクトの”粒度”(granularity)がキモだと思ってます。 memcachedは、KeyとDataをペアで格納して、Keyが与えられると、関連付けられたDataを返すだけのシンプルなシステム。PerlやPHPの連想配列と同じ。このmemcachedをRDBのキャッシュとして活用してやる場合、memcachedに格納するキャッシュデータの単位、”粒度”をどう設計するかが重要になってくる。 RDBの場合、格納されるデータはRow(レコード)単位。じゃぁキャッシュもRow単位で作ってやればいいのかといえば、それではうまくいかないケースもたくさんある。RDBでは専用の問い合わせ言語であるSQLを使って、 SELECT * FROM hoge
memcached(リンク)は分散メモリオブジェクトキャッシュのシステムで、動的なウェブアプリケーションでデータベースの負荷を軽減するのに利用される。memcachedはメモリにデータやオブジェクトをキャッシュしてデータベースの読み込み回数を減らすことでデータベースを多用するウェブサイトのスピードを向上させる。memcachedのベースとなるのはキーとそれに対応する値の組を格納したハッシュマップだ。memcachedのサービスデーモンはCで書かれているが、クライアントの言語はmemcachedプロトコル(リンク)でデーモンと通信できれば何でもいい。memcachedは冗長性を提供する(たとえばハッシュマップのコピーを保存するなど)ものではなく、サーバマシンSが停止したりクラッシュしたりすると、Sにあったキーおよび値は失われてしまう。 JBoss(リンク)のJGroups(リンク)・Clus
本稿の前提環境 memcached 1.2.5 データベース:PostgreSQL 8.3.1 OS:CentOS 5(Linux kernel 2.6 ) シェル:bash CPU:Intel Core2Quad 9660 2.4GHz RAM:PC2-6400 8GBytes 以降では、前編の内容を前提として、実際にmemcachedにアクセスしながらpgmemcacheの使い方を説明しますので、memcachedが起動されているかどうか確認してください。 最初に、ターミナルソフトpsqlを使って直接pgmemcacheの主要な関数を実行してみます。 次ページからは簡単な例を使って、PostgreSQLとmemcachedを連携させる方法を説明します。 サポートされている関数 pgmemcacheはlibmemcacheのほとんどの機能を利用できますが、ここでは基本的な関数の説明にとど
本稿の前提環境 memcached 1.2.5 データベース:PostgreSQL 8.3.1 OS:CentOS 5(Linux kernel 2.6 ) シェル:bash CPU:Intel Core2Quad 9660 2.4GHz RAM:PC2-6400 8GBytes memcachedは、Danga Interactiveによって開発されたオープンソースのメモリキャッシュサーバです。 メモリ上にデータを保存するのでmemcachedを終了するとデータが失われますが、(OracleやMySQLといった)RDBMSと比較するとけた違いの高速レスポンス性能を有し、数千万件という大量のデータを扱ってもほとんど性能が劣化しないという特徴があります。 機能は限界まで切り詰められ、基本的にはキーとデータの組(以下、itemと呼びます)の保存と検索と削除しかできません。 にもかかわらず、me
memcachedはキャッシュなので、特定のデータが常にサーバに存在しないことが前提でシステムに導入されます。今回はmemcachedのデータ削除メカニズム、そしてmemcachedの最新動向であるバイナリプロトコルと外部エンジンサポートをご紹介いたします。 memcachedはデータ削除もリソースを有効活用する memcachedから実際にデータは消えない 前回の記事で紹介させていただきましたが、memcachedは確保したメモリを解放しません。レコードはtimeoutが過ぎたらクライエントから見えなくなる(invisible・透明になる)だけで、その領域は再利用される仕組みです。 Lazy Expiration memcachedは内部的にレコードがexpireしたかの監視を行いません。替わりにgetする際にレコードのtimestampを見ることで、そのレコードがexpireしたかをチ
株式会社ミクシィ 開発部 システム運用グループの長野です。普段はミクシィのアプリケーション運用を担当しております。今回から数回にわたり、最近Webアプリケーションのスケーラビリティの分野で話題になっているmemcachedについて、弊社開発部 研究開発グループの前坂とともに、使い方や内部構造、運用について解説させて頂きます。 memcachedとは memcachedは、LiveJournalを運営していたDanga Interactive社で、Brad Fitzpatrick氏が中心となって開発されたソフトウェアです。現在ではmixiやはてな、Facebook、Vox、LiveJournalなど、さまざまなサービスでWebアプリケーションのスケーラビリティを向上させる重要な要素になっています。 多くのWebアプリケーションは、RDBMSにデータを格納し、アプリケーションサーバでそのデータ
memcachedとは? memcachedとはその名の通り、データをメモリ上に保持するキャッシュサーバで、アクセス数の多いWebサイトにおいてデータベースの負荷を減らすために利用されることが多い。データをディスクに書き出さず、保持するデータもキーと値のみと非常にシンプルであるため動作は高速だが、memcachedを終了するとデータが失われてしまうという問題がある。そのためmemcachedには消失しても問題のないデータのみを格納するようシステム設計を行う必要がある。 なお、memcached互換のキャッシュサーバとして、データをディスクに永続化する機能を備えたmemcachedbや、レプリケーション機能を備えたrepcachedがある。 Java向けのmemcachedクライアントはいくつか存在するが、本稿で紹介するのはmemcached client for java。LGPLで提供さ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く