タグ

tuningに関するhibomaのブックマーク (37)

  • 過負荷をかわす Apache の設定 : DSAS開発者の部屋

    KLab Advent Calendar 2011 「DSAS for Social を支える技術」の9日目です。 前回は php を動かしている Apache の手前にリバースプロキシを 置く必要性を解説しました。 今日は、 その前の php のプロセス数を絞る設定と合わせて、実際に Apache で 設定する方法を紹介します。 以降、 php を動かしている Apache の事をアプリサーバー、リバースプロキシ+ 静的ファイル配信を行っている Apache の事をプロキシサーバーと呼びます。 基設定 まずは基的な設定のおさらいです。 アプリサーバー 並列数を絞るには MaxClients を設定します。アプリがどれくらいの時間を CPUの処理で使って、どのくらいの時間を外部リソース待ちに使っているかにも よりますが、だいたいCPU数の1.5倍〜2倍くらいが適当だと思います。 Hyp

    過負荷をかわす Apache の設定 : DSAS開発者の部屋
    hiboma
    hiboma 2011/12/13
    奥深い。
  • 高負荷でも安定したサービスを提供するためのリバースプロキシ : DSAS開発者の部屋

    KLab Advent Calendar 2011 「DSAS for Social を支える技術」の8日目です。 前回は php のプロセス数を絞ることのメリットを解説しました。 プロセス数を絞るには FPM を使うなどの方法もありますが、 DSAS for Social では php は Apache + mod_php を使っていて、 それにリバースプロキシを組み合わせて利用しています。 今日はこのリバースプロキシの役割を説明して行きます。 以降、リバースプロキシのことを単にプロキシと呼びます。 プロキシを使う理由 そもそも、なぜプロキシを使うのかを説明しておきます。 5秒ルール ケータイ向けのソーシャルアプリでは、ユーザーからのリクエストは 一旦プラットフォームのサーバーを経由して、アプリを提供している Webサーバーに到達します。 このとき、アプリ側のレスポンスがあまりに遅いとプ

    高負荷でも安定したサービスを提供するためのリバースプロキシ : DSAS開発者の部屋
    hiboma
    hiboma 2011/12/13
    ][proxy]
  • php のプロセス数を絞ろう : DSAS開発者の部屋

    KLab Advent Calendar 2011 「DSAS for Social を支える技術」の7日目です。 @methane の新シリーズは Apache+php のチューニングです。 今日のお題は、タイトルのとおり、phpのプロセス数(=並列数)を減らすことです。 これはチューニンガソンでも人気のチューニングだったのですが、 今日はそのメリットをまとめます。 ロードアベレージが下がる プロセス数をコア数+α程度に抑えると、ロードアベレージがコア数の数倍〜 数十倍になることがなくなります。 例えばロードアベレージがコア数の100倍になると、1リクエストの処理に かかる時間は100倍以上に増え、せっかく処理したのにクライアント側が タイムアウトしていて完全に無駄骨になったり、最悪では再リクエストが来て さらに負荷が上がる負のスパイラルに陥る可能性があります。 たくさん一気に処理しよう

    php のプロセス数を絞ろう : DSAS開発者の部屋
  • S3のダウンロード速度を1.5〜4.5倍高速化する怪しげな方法 - 昼メシ物語

    バケットのIPアドレスを適切なものに固定することで、期待値でいうと1.5倍、最大で4.5倍程度高速にダウンロードできます。 この方法は非常に効果が高いですが、非公式なものであり、ある日突然破綻する可能性もありますので自己責任でお願いします。 S3のバケットとエンドポイント まずは前提知識として、S3の名前解決について説明します。 S3のバケット "mybucket" というバケットを東京リージョンに持っているとします。するとそのバケットのドメイン名は mybucket.s3.amazonaws.comになります。これをエンドポイントと呼びます。このバケットの中にあるファイル "hello.txt" にアクセスする場合には、 http(s)://mybucket.s3.amazonaws.com/hello.txtというようなURLを用います。*1 エンドポイントのIPアドレス この myb

    S3のダウンロード速度を1.5〜4.5倍高速化する怪しげな方法 - 昼メシ物語
    hiboma
    hiboma 2011/12/12
    なかなか黒魔術。差ありすぎ
  • ソーシャルアプリのボトルネック調査例(strace編) : DSAS開発者の部屋

    KLab Advent Calendar 2011 「DSAS for Social を支える技術」の6日目です。 はじめに ソーシャルゲームの開発では、仕様変更への柔軟な対応が求められることが多い上、突発的なアクセス増加にも耐えられる応答性能が要求されます。 一昔前までは、サービスの性能を担保するにはきちんとアーキテクチャを設計し、入念に動作チェックして、負荷試験して、プロファイル取って・・・みたいなことをリリース前にひらすやるのが理想だと思っていた頃もありました。 しかし、ソーシャルゲームの世界ではリリース直後からイベントやキャンペーンなどの追加開発が入ったり、ユーザの動向やコミュニティを参考にして仕様を変更することが多いので、リリース前に頑張ってチューニングしていても、その性能を担保し続ける事が難しいといった現状があります。 まあ、これはこれで刺激があって楽しい面もありますし、遊んで

    ソーシャルアプリのボトルネック調査例(strace編) : DSAS開発者の部屋
  • DSAS for Social での MySQL のボトルネックと今後の方針 : DSAS開発者の部屋

    KLab Advent Calendar 2011 「DSAS for Social を支える技術」の5日目です。 @methane による MySQL を骨までしゃぶるチューニングシリーズ (シリーズ名は今考えました)のまとめとして、現在の DSAS for Social の MySQL のリアルな性能値や直面しているボトルネックを赤裸々に公開 してしまいます。 innodb_io_capacity を増やそう 題に入る前に、まだ紹介してないけど1記事にするほどではなかった パラメータを紹介しておきます。 innodb_io_capacity は、 InnoDB に教えるヒントで、 Disk の IO/sec を指定します。 デフォルトでは、通常のHDDでも使えるように中途半端な値(バージョンによって100か200) になっているのですが、BBU付きバッファがあるRAIDカードを使うな

    DSAS for Social での MySQL のボトルネックと今後の方針 : DSAS開発者の部屋
  • レプリケーションが追いつかないときに試すこと - Hatak::Techlog

    MySQL Casual Advent Calendar 2011” 7 日目を担当させていただく、hatak (@hisashi) です。 普段はモバイルゲームのインフラをメインにみているのですが、今回はそんな業務で経験したことを基に記事を書かせていただきます。 カジュアルすぎる内容かもしれませんが、お付き合いいただければと思います。 MySQL のレプリケーション MySQL のレプリケーションは、安定稼働やバックアップ、負荷分散などの目的に利用できる優れた機能です。 bin-log (バイナリログ) を利用して Master サーバから Slave サーバに更新を伝播させ、データの複製を行います。Slave サーバでは、2 つのスレッドが動作しています。 IO_THREAD – Master から送られてきたデータを受け取り、relay-log (リレーログ) として書き出す SQ

  • SHOW FULL PROCESSLIST を使った MySQL のプロファイリング : DSAS開発者の部屋

    KLab Advent Calendar 2011 「DSAS for Social を支える技術」の3日目は、 引き続き MySQL 周りのチューニングノウハウとして、すぐに役立つ プロファイリング方法を紹介します。 DBサーバーの負荷が高い時、 slow_log を見て問題になっている重いクエリを 発見するのが一般的かもしれませんが、 slow_log に一切ログが残らないのに 負荷が高い状況や、むしろ負荷が高すぎてごく一般的でどう考えても遅いはずが ないクエリ ("SET NAMES utf8" や "BEGIN") すら slow_log に大量に乗ってしまう場合が あります。 slow_log 以外で問題になっているクエリを見つける方法として、 "SHOW FULL PROCESSLIST" コマンドがあります。これを数回〜数十回叩いてみて、 よく出ているクエリは、遅かったり量が

    SHOW FULL PROCESSLIST を使った MySQL のプロファイリング : DSAS開発者の部屋
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • hamano's gist: 第2回 Tuningathon チューニングメモ

    tuningathon2_memo.txt �ف��U #���U # 第2回 Tuningathon チューニングメモ このメモは @hamano が [第2回 Tuningathon][1] に参加した際に行ったチュー ニングポイントと感想です。 [1]: http://www.zusaar.com/event/agZ6dXNhYXJyDQsSBUV2ZW50GLmFBgw "第2弾!いろいろチューニングしてパフォーマンスを競うバトルイベント開催!「Tuningathon」2!! #tuningathon" 今回のお題は MediaWiki への参照性能という事でまたPHPか! とは思いました が2台構成可、Web Serverの入れ替え可、という条件でしたのでチューニングの 範囲が大きく広がった様に感じました。 ただ、この程度の平行数ではapacheをその他実装に置き換えた所で大した

    hamano's gist: 第2回 Tuningathon チューニングメモ
  • チューニンガソン2で2位でした : DSAS開発者の部屋

    10/1(土)にチューニンガソン2 というイベントに参加してきました。 もちろん前回に引き続き優勝を 目指していたのですが、今回は残念ながら2位でした。 今回もどんなチューニングをしていたのかの記録を公開します。 (ちなみに優勝したのは元KLabの濱野さんで、同じく メモを公開されています。) 今回のチューニンガソンのお題は、 Wikipedia の高速化で、 MediaWiki と Wikipedia の データが入った MySQL のデータには修正を加えずに、ランダムな100ページの表示速度を競いました。 マシンはメモリ1GBでデュアルコアのものが2台で、今回はWebサーバーの部分は自由に構成できます。 1. ボトルネックの確認 とりあえず AMI Linux の標準の php + apc で計測したところ、1ページの表示に1秒くらい使っています。 またphpか!ということで、やっぱり

    チューニンガソン2で2位でした : DSAS開発者の部屋
  • isuconお遊びチーム(事前社内β組)の設定あれこれ - hideden.hatenablog.com

    ISUCONに行ってきました。社内での事前βテストに参加して問題を知っていたので出場はせず。社内β参加を持ちかけられたときは、正直「めんどくせーなw」が素直な感想だったんですが、実際にやってみるとスコアがリアルタイムにわかる&ちょっとずつ自分のスコアが上がっていくってのは楽しくて、わりと気でチューニングしてしまいました。 さて、戦でも14時頃からお遊び用としてサーバー一式が解放されたので、大人げも無くそこで112500req/minをたたき出して参加者のやる気を削いだ(・・と懇親会で言われました。色々すいません!)構成について。 reverse proxy nginx(1.0.5) ngx_http_memcached + ngx_http_ssi_filter + ngx_http_scgi + ngx_http_upstream_keepalive(3rd party plugin

    isuconお遊びチーム(事前社内β組)の設定あれこれ - hideden.hatenablog.com
  • #isucon ではどんなことを考えながら作業していたか - 酒日記 はてな支店

    前のエントリ #isucon で優勝してきました は当日夜に酔っ払った頭で勢いで書き上げたので、少し冷静に振り返ってまとめてみます。 最初のボトルネック発見 DBCPU 4コアをフルに使って回っているのですぐに Query が重いのは分かった 重いクエリはキャッシュすれば、という発想は自然 (実際 MySQL のクエリキャッシュだけでスコアは 1.5倍程度上がる)、とはいえ このクエリは実行に 300〜400 ms 程度かかる アプリケーションの要件上、毎秒更新する必要がある 1秒ごとに更新に 0.3〜0.4秒かかる処理をするのは悪手だろう cache が消えてから生成、とすると生成処理が複数同時に走って無駄が大きい (実際ベンチマーク中の slow query を見ると 600〜700 ms 程度の時間が掛かっていた) ということで、DB のテーブル構成を変更して高速化できないか、

    #isucon ではどんなことを考えながら作業していたか - 酒日記 はてな支店
  • Covering Index と self-join と MySQL - blog.nomadscafe.jp

    某サービスのクエリチューニングのお話。 ブログとか日記とかそういうサービス系で次のようなテーブルがあったとします。 CREATE TABLE entries ( id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, user_id INT UNSIGNED NOT NULL, posted_by TINYINT UNSIGNED NOT NULL, --#PC、mobileなどどこから投稿されたかのフラグ title VARCHAR(512) NOT NULL, body TEXT NOT NULL, created_at DATETIME NOT NULL, updated_at TIMESTAMP NOT NULL, status TINYINT UNSIGNED NOT NULL, INDEX (user_id,created_at

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • チューニンガソンで優勝してきました : 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開発者の部屋
    hiboma
    hiboma 2011/07/11
    これみたいなー >> "上位陣が行った改良を全部組み合わせれば、20秒を切ることも可能だったかもしれません "
  • 高負荷サイトのボトルネックを見つけるには : DSAS開発者の部屋

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

    高負荷サイトのボトルネックを見つけるには : DSAS開発者の部屋
    hiboma
    hiboma 2011/07/08
    /proc/sys/net/core/somaxconn