CGI 等で生成される動的コンテンツには,個別のリクエストごとに異なるレスポンスを 返さなければならないものもあれば,ある程度の時間内であればどのリクエストに 対しても同じレスポンスを返すものもあるでしょう.後者であれば,レスポンスを mod_mem_cache でキャッシュすることにより毎回 CGI 等を実行せずに済むので, かなり効果的にサーバの負荷軽減を実現することが...
『 GFSやMapReduceとの機能単位での比較検証資料。とても良さげ。あとでじっくり読みますー。/どうでもいいけど久しぶりにTeXで書かれたっぽい文書見た。やっぱいいなぁTeX。。。/downloadして調べたらやっぱりLaTeXだった 』
世間では PHP が、Perl が、と盛り上がっているようですが空気を読まずまたカーネルの話です。今回はページキャッシュについて。 /dev/shm に参照系DBを持っていくと I/O 負荷が激減した件(当たり前だけど) :: Drk7jp で、ディスク上にあったファイルを /dev/shm (tmpfs) に移したら I/O 待ちがなくなって負荷がさがった、ということなんですがおそらくこれは tmpfs に置く必要はないか...
スレッドの悩み解決 / WebSphere でコマンドをキャッシュする / Java NIO で構築する高スケーラビリティを持つサーバ / MIDP 2.0でAlertを使う / 大規模バッチトランザクションの処理 / Java 5.0 の新しい並列性ユーティリティクラスを使う / その他の Java2 Standard Edition 1.5 の新機能 / Web 層におけるステート情報の複製 / 今月の質問:昔ながらのチューニングパラメータ? ■Java Performance Tuning Ne...
昨日の続きです。昨日の記事がまったくデタラメだとさすがに気まずいので、Invoke が呼ばれてるよ、という事実ぐらいは確かめようと思いました。私はバイナリアンではないのですが、がんばってMSHTMLの中を追ってみることにします。 まず、C++からIDispatch::Invokeを呼んだ場合と、Javascriptから window.document を参照した場合の2つの処理が合流するところを探しました。 ↑ここです。 ...
当エンジニアブログを私物化していると専らの評判のmikioです。ブログを書かないと死んでしまう病に冒されているのでしかたないですね。個人ブログ時代よりもわかりやすくする努力はしているんですけどね。さて、今回はソースコードの最適化による高速化について述べます。 ベンチマークテスト TCはQDBMや他のDBMより高速であるという主張をしたいのですが、その根拠として...
query-reviewerはRails用のプラグインで、データベースにMySQLを使っている場合に、不適切な検索が行われていないかどうかを非常に簡単に調べることができる。(MySQL以外ではたぶん動かない。)使い方は非常に簡単で、 git clone git://github.com/dsboulder/query_reviewer.git vendor/plugins/query_reviewer するだけ。設定等はまったくいらない。インストールすると、Railsアプリの左上に「SQL DISABLED」...
『 『例えばセッション管理は、基本的にはセッションIDを保存すればよいので、memcachedに最適な仕事です』<昔こういうのを独自に開発したなぁ。懐かしい日々 』
最近自分で書いた JS プログラムが驚くほど重かったので、どこに原因があるか調べたいと思いました。 その方法として、怪しいと思う箇所に (あるいは思わない箇所にも) 手作業でタイマーを仕掛けて、部分部分の実行時間を計測するのも手だと思うんですが、クラスのどのメソッドでどのくらい時間が掛かっているのかが自動的に分かる、というのが理想的かなと思いました。 ...
Flash/Flex のアプリケーションを開発していると (たまには) メモリリークとか気になることもあるかと思います。今回は Flash Player 9 のガーベジコレクションについてです。詳細な実装レベルだと、Flash Player のアップデート時に、ガーベジコレクション周りでも多少の変更が行われたりしていますが、いまのところ基本的なモデルは変わっていません。今回はこの ”基本的なモデ...
サーバのチューニングをする上でかなりやっかいなのがデータベース系。特にログファイルの量が膨大になると後から中身を見て問題を分析するのも一苦労という場合が。そんなときにこのMySQL用topコマンド「mytop」を使えば一体何が起きているのかがすぐにわかるので問題点の把握が容易になります。ベンチマークするときに併用すればかなり効率が良くなるのではないかと。 イ...
for 文で 100 項目とか 1000 項目とかあるテストケースを処理するとブラウザが固まる。 こんなダイアログが表示されます。 ということで for 文を setTimeout や setInterval に変換する事で定期的にブラウザに処理を戻すことができる。 // ここでは console.log のところでログを取ってますが // 通常は処理が入ります。 for (var i = 0; i < 3; i ++) { console.log('a' + i); } /* * 結果 * a0 * a1 * a2 */ これ...
[http://www.onflow.jp/blog/archives/2006/04/30.html:title=30万個ぐらいの静的ファイルを配信するサーバーの選び方] で静的な配信サーバに関することが述べられている. naoyaさんが公開されてるInside Hatena Bookmark’s Backend の資料などを読むと、mod_perlなサーバーやMySQLサーバーの選び方の参考になったりするわけですが、世の中を見渡してみても、静的コンテンツ(画像とか)を配信するサーバー...
チャリンコ通勤による滝のような汗で、朝からTシャツがシースルーになってしまうmikioです。さて今回は、Tokyo Cabinet(TC)のデータベースを各種のアルゴリズムで圧縮して利用する方法についてご紹介します。 圧縮B+木 B+木とは、比較関数の値による順序が近いレコード群を単一のページにまとめ、各ページにB木(multiway balanced treeの略であり、二分木(binary tree)とは違います)...
『 Javaパフォーマンストラブルシューティングに役立つ10のツールがTop10JavaPerformanceTroubleshootingToolsとして紹介されている。OSの限定されるツールもあるため実質的には7つの紹介とみていいだ 』
お題は「あるプロセスがどの程度の物理メモリ領域を利用したかを知りたい」です。 手っとりばやく知りたいときは top や ps などで調べると良いでしょうか。例えば手元の coLinux で top して M キーでソートすると emacs のプロセスが最もメモリを使っているようです。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1923 naoya 18 0 23120 19m 3096 S 0.0 2.0 0:55.40 emacs メモリサイズは VIRT と RES があ...
『 DOM経由で動的にロード,数年後にはもはや不要になっているかも。Safari,IE8はJavaScriptを並列してロードする実装がされている。FFX3はブロックして読み込む、将来同様に並列読み込みとみられる 』
の記事でmemcachedは分散に長けた高速なキャッシュサーバであることが紹介されました。今回はmemcachedの内部構造がどう実装されているのか,そしてメモリがどう管理されているのかをご紹介します。また,memcachedの内部構造の事情による弱点も紹介します。 メモリを整理して再利用するSlab Allocationメカニズム 昨今のmemcachedはデフォルトでSlab Allocatorというメカニズムを使ってメモ...
開発部 システム運用グループの長野です。普段はミクシィのアプリケーション運用を担当しております。今回から数回にわたり,最近Webアプリケーションのスケーラビリティの分野で話題になっているmemcachedについて,弊社開発部 研究開発グループの前坂とともに,使い方や内部構造,運用について解説させて頂きます。 memcachedとは memcachedは,LiveJournalを運営していたDanga Interac...
「Ruby なんて遅くて使えない」という意見が出ます。(昔、Java も似たようなことを言われましたっけ。)これに対して、Ruby 好きな人からは、「大抵の Web アプリではボトルネックは IO になるからアプリの言語は遅くても構わない」「CPU 時間よりも開発者の時間の方が重要」というような反論が展開されます。 Rails 厨にならないためにも、ここは Ruby に批判的な目を持って、こ...