2010年6月26日に行われたイベント、オープンソースカンファレンス2010 Hokkaido内のセミナーで使われた発表スライド「PHPで大規模ブラウザゲームを開発してわかったこと」Read less
かれこれ一年ほど前に実施した実サービスでの apache のチューニングネタを思い出したように書いています。 以前いた部署では少ないサーバ台数で大量のリクエストを如何に処理しきるかってことに燃えていたので、静的コンテンツなどをブラウザに支障のない範囲で最大限にキャッシュさせ、サーバとネットワークの負荷を最小化させていました。 当時参考にした情報源は以下の3つでした。 どのようなレスポンスヘッダを返しておけばブラウザキャッシュを最大化できるかのテクニックがまとめられています。 ブラウザキャッシュとレスポンスヘッダ - murankの日記 Kazuho@Cybozu Labs: キャッシュの上手な使い方 [Studying HTTP] HTTP Status Code チューニングにおいて重要なのは自分自身での検証。というわけで自前で検証した結果と検証するために用意したプログラムを公開します。
みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 みんなのブロックチェーンは,ブロックチェーンの入門書。暗号やハッシュなどを含め,基礎からブロックチェーンの仕組みを学べる書籍です。 いろんな方に「新しい技術を学ぶことの楽しさ」を感じ取ってくれたら著者として嬉しいです:-)。お金は技術的にどのように定義されるのか。 みんなのIoTは,モノのインターネットと呼ばれるIoTの入門書です。IoTの基本について,読者に寄り添って優しく解説しました。裏テーマは一番とっつきやすいPython入門書。サポートページはこちら みんなのPython 第四版は,より分かりやすい入門書を目指し,機械学習やデータサイエンスの章も追加して第三版を大幅に書き換えました。Python 3.6にも華
今更感があるかもしれませんが紹介。 stressコマンドを使うと、CPUやメモリ、ディスクに対して意図的に負荷を与えることができます。 どこで使うかというと、、、高負荷時のシステムの挙動を見たい場合、AutoScaling等の負荷状況に応じて自動でスケールアップ/アウトさせるための仕組みのテストをしたい場合、部屋が寒いときにPCに発熱させたい場合wwwなどで使えるのかな、と。 Stressをインストール CentOSやRedHatの場合は、DAG(rpmforge)のリポジトリがあるので、ここのパッケージからインストールしましょう。 DAGをyumのリポジトリに追加する場合は、以下リンクから(CentOS5[x86_64]系の2010/05/14時点の最新版は)"rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm"をダウンロードして、rpmインストールしま
リレーショナルデータベースを利用する際には、高い性能を引き出すために物理設計をし、スキーマを工夫し、パラメータのチューニングを行うことがつねに行われてきました。 性能のボトルネックはたいがいHDDにあり、いかにそのボトルネックを回避するかがチューニングのポイントですが、最近では性能向上のための武器として、HDDよりもずっとアクセス性能の高いSSDが注目されています。SSDはHDDと置き換えるだけで、アプリケーションにまったく手を加えずに性能向上を可能にする手段として非常に魅力的です。 HDDの代わりにSSDを利用したら、リレーショナルデータベースの性能はどれだけ向上するのでしょうか? オラクルと富士通が共同検証を行い、その結果をホワイトペーパーとして先週発表しました(参考「日本オラクルと富士通 フラッシュ技術活用によるデータベース高速化を共同検証」)。 ホワイトペーパーでは、HDDの代わり
まずは次の表をご覧あれ。これはプログラミング言語のベンチマークとして有名な Computer Language Benchmarks Game のベンチマーク結果。上にいくほど高速で、下に行くほど遅い言語になる。 これを見れば、最速な言語は C/C++ であり、Java や Haskell や OCaml といった静的な言語は軒並み上位に登場する。これに対し、Ruby や Python や PHP といったスクリプトは全部下のほう (つまり遅い)。その速度差は非常に大きく、このベンチマークで見ると Python3 や Ruby1.9 は C/C++ の約50倍から60倍遅く、Perl は約90倍、PHP にいたっては約130倍遅いことになる。 (ちなみに JIT つきの Lua が驚異的に高速なのが目をひく。この結果が本当だとしたら、言語の速度に大きく関係するのは動的か静的かではなく、どれ
計測元は、都内のBフレッツでISPはライブドアプロバイダ。 計測とグラフ描写のコードはここに: http://github.com/hirose31/monitor-latency グラフは、紺色の線がレイテンシの平均値で、水色の範囲は最小値と最大値。 ping RTT まず、ホットなシンガポールのEC2。このグラフだけ、表示期間が1日分。だいたい90msecぐらいですね。 続いてEC2のwestとeast。この2つだけ、計測期間がちょっと古くて2010/3/27のもの。 Amazon EC2 アメリカ西海岸 125msec Amazon EC2 アメリカ東海岸 200msec あとはいろいろ。 ニフティクラウド Google JPIX はてなブックマーク 都内某iDC httping データは httping -c 10 -i 0.7 -r -g TARGET_URLの結果の最小値、平均
ユーザー同士のつながりを元に時系列に140文字のメッセージを20個ほど表示する――。Twitterのサービスは、文字にしてしまうと実にシンプルだが、背後には非常に大きな技術的チャレンジが横たわっている。つぶやき数は月間10億件を突破、Twitterを流れるメッセージ数は秒間120万にも達し、ユーザー同士のつながりを表すソーシャル・グラフですらメモリに載る量を超えている。途方もないスケールのデータをつないでいるにも関わらず、0.1秒以下でWebページの表示を完了させなければならない。そのために各データストレージは1~5ms程度で応答しなければならない。 Twitterのリスト機能の実装でプロジェクトリーダーを務めたこともあるNick Kallen氏が来日し、2010年4月19日から2日間の予定で開催中の「QCon Tokyo 2010」で基調講演を行った。「Data Architecture
もっと詳しい方のフォロー募集です アプリケーションがマルチスレッドになってもネットワーク処理が分散されなければマルチコアを活かせない典型的な例です。id:viverの古橋さんがs100kpsとしてあげていた件にも近いかも。 memcachedで現象を確認します。最近のmemcachedはマルチスレッドで動くようになっているので、まずはそれを確認します。 $ memcached-tool localhost stats|grep threads threads 4 スレッドが4つで起動しています。 負荷がそれなりにある状態(8000req/sec程度)で、コマンドラインでtopを開き、「1」キーを押して、CPUごとの使用率を表示します。(例はFedora8 kernel-2.6.23) Tasks: 77 total, 1 running, 76 sleeping, 0 stopped, 0
InnoDBはMyISAMと比較して安全(OSクラッシュや電源断が発生してもテーブルが壊れない)分、書き込みが遅い。データベース屋さんからすると、それは当然のことでMyISAMがおかしいんだ、ということになり、だからバッテリバックアップ機能のついたRAIDカードを使うんだ、という話になる。でも、MyISAMを使っているウェブ屋さんの現場では、場合によって多少データが消えてもかまわないから、安いハードウェアで大量のアクセスを捌きたい... って乖離があるんじゃないかなーと思ってる。 そのような場合には、my.cnf の innodb_flush_log_at_trx_commit パラメータを調整することで、MyISAMに比肩する書き込み速度を得ることができる(そのかわり、クラッシュや電源断の場合は、設定によって直近1秒以内の変更が失われる)。 他のパラメータも含めて書いておくと、データベー
Twitterで話題になってたので簡単にまとめました。 ●MyISAMにしか無い機能を使いたい場合はMyISAMを使うしかない ・全文検索 (TritonnやSphinx) ・GIS ●InnoDBの利点(MyISAMの欠点) ▲障害対応系 ・クラッシュしても再起動するだけでリカバリができる ・クラッシュリカバリにかかる時間はテーブルサイズに比例するようなことはなく、コミット済みのデータは修復できる (巨大なMyISAMテーブルのREPAIRには数日単位で時間がかかることがある) ・オンラインバックアップができる ・INSERTやLOAD DATAなどを実行している途中でCtrl+Cでその更新系SQL文を止めても、テーブルは壊れないし、中途半端な状態で更新されることも無いし、スレーブが止まることも無い ▲性能系 ・行レベルロックなので並列性が高い(MyISAMはテーブルロック)。またSEL
1990年代、電話回線やISDNを使ったダイヤルアップ接続(低速・時間課金)でインターネットに接続することが一般的だった頃は、Webサイトの利用は「時間との勝負」という側面がありました。そのためWebサイトを制作する際も、htmlファイルや画像などを含めたページ当たりのサイズを小さくしてページの表示速度を高め、ユーザを待たせないことが重要視されていました。 ■人間の思考とシステムの反応速度 人間の操作に対するシステムの反応速度については、一般的に次のような関係が見られると言われています。 (参考:「Response Times: The Three Important Limits」 Useit.com(英語)、「10の累乗: ユーザーエクスペリエンスにおける時間スケール」 Jakob NielsenのAlertbox(日本語)) 0.1秒:ユーザは、自分がシステムを「直接」操作していると
世の中ではたくさんの人が独自にベンチマークを行ない、独自に情報発信がされています。そのベンチマークの中には、非常に参考になるものもあれば、現実性に大きく欠けるものもあります。競合他社が、ライバル社の製品にとって不利な条件でベンチマークを行い、それを発信することも日常的に行われています。ベンチマークの結果を鵜呑みにすることは危険で、結果の意味を判断するスキルを持つことが重要です。これはプロジェクトにおいて負荷テストを行う場合にも重要です。負荷テストの条件設定が正しいかどうかを判断できるようになるためです。 ここでは、私がDBサーバのベンチマーク/負荷テストを行ったり結果を読んだりする上で、心がけているポイントを10個ほど紹介したいと思います。 ■ハードウェアに関する4つのポイント 1. ハードウェアのスペックと設定を注視する ハードウェア構成によってベンチマーク結果は劇的に変わるので、言わず
元マイクロソフトのプログラマで書籍「Joel on Software」などでも知られる著名なプログラマであるジョエル・スポルスキー氏が立ち上げた、プログラマ向けのQ&Aサイト「Stack Overflow」。 月間1600万ページビュー、300万ユニークビジターのこのWebサイトがどのような構成になっているのか、Webサイト「High Scalability」の記事「Stack Overflow Architecture」に分かりやすいまとめが掲載されていました。 最大の特徴はスケールアップ型 Stack Overflowの特徴は2つあります。1つはスケールアップ型のアーキテクチャだということです。現代のマルチコア、大容量メモリ、パラレルプログラミング技術においては、スケールアップ型のアーキテクチャも重要な選択肢だと記事では説明しています。 その説明の通りStack Overflowでは、
サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一本吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には食材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい食材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ
http://nanapi.jp 本日2009年9月1日、株式会社ロケットスタートの新サービス「ナナピ」をリリースしました。 「ナナピ」はライフレシピと呼ばれる生活の便利な知恵や、ノウハウをみんなに共有してしまおう!というサービスです。 なんとか予定通り9/1にリリースをすることができました。すでに投稿数が160ほどあり、生活に便利な内容が投稿されています。 http://r.nanapi.jp/162/%E3%81%82%E3%81%8F%E3%81%B3%E3%82%92%E6%AD%A2%E3%82%81%E3%82%8B%E6%96%B9%E6%B3%95/ http://r.nanapi.jp/158/%E3%83%AC%E3%83%99%E3%83%AB%E3%81%8C%E4%B8%8A%E3%81%8C%E3%82%8B%E6%8C%A8%E6%8B%B6%E3%81%AE
データベースの処理は、しばしばシステム全体の性能を大きく左右する。システムのパフォーマンスが悪ければハードウェアリソースの不足を招き、余計な投資が必要になる。逆に適切なチューニングを施せば、ITコストを抑えられるはずだ。MySQLのエキスパートである、サン・マイクロシステムズのエンジニアに、そのポイントを聞いた。 ビジネス環境が激変する昨今、ITへの効率的な投資を模索する動きが続いている。そんな状況の中、オープンソースに注目する企業も少なくないのではないだろうか。だが、ただ価格が安いからという理由だけで導入してもメリットを得られない。的確なメンテナンスを行わなければ、ハードウェアリソースの不足によりさらに投資が必要になることもある。 1日以上かかっていたクエリ処理を1秒に短縮 システムの性能を大きく改善する可能性があるのが、データベースのパフォーマンスチューニングだ。パフォーマンスチューニ
データベースの醍醐味は、パフォーマンスチューニングにあります。 チューニングによっては、同じ処理でも1時間掛かる場合もあれば、 1秒で終わるということもあり得る世界です。 僕はDBの魅力に取り付かれた者の一人です。 DBという技術の奥深さが気に入っています。 DBを極めると、どこの現場に行っても絶対に必要とされます。 また、どこの現場に行っても正解を導く方程式は一緒なので応用が利くのです。 しかし、その基本原理を体系的に学べる手段はあまりありません。 OracleMasterやMCDBAといった資格試験でも学べることは限られていて あとはWebで調べるなりマニュアルを読むなりするしかありませんでした。 とくに肝であるパフォーマンスチューニングについては、 経験則でチューニングしている部分も多いです。 Oracle、SQLServer、MySQLと色々なDBのチューニングをしてきましたが、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く