タグ

ブックマーク / blog.nomadscafe.jp (37)

  • MySQLの設定ファイル my.cnf をgithubにて公開しました & チューニングポイントの紹介 - blog.nomadscafe.jp

    YAPC::Asiaのスライドで予告していた通り、実際に弊社のいくつかのサービスで使っている my.cnf を公開しました。 github: https://github.com/kazeburo/mysetup/tree/master/mysql 今回、公開した理由はMySQl Beginners Talksの発表の中でも触れている通りです。MySQLのソースコード中に含まれるサンプルのmy.cnfが最近のサーバハードウェアや運用に合わなくなって来ているという状況で、自分の設定にイマイチ自信が持てていない人は少なくないはず。そこで各社秘伝のタレ的な my.cnf をOpen & Shareすることで、モダンなmy.cnfを作り上げる事ができるんじゃないかという考えの下、今回 github にて公開しました。 ファイルは4つあり、それぞれ MySQL 4.0、5.1、5.5、そしてテスト中

  • ロードアベレージを監視して任意のコマンドを実行するコマンド - blog.nomadscafe.jp

    とあるサーバでロードアベレージが上がったときに何が起きているか知りたくなったので書いてみました。他に似たツールがあれば教えて欲しいです cpan: https://metacpan.org/release/App-LoadWatcher github: https://github.com/kazeburo/App-LoadWatcher インストール インストールはcpanmを使います $ cpanm App::LoadWatcher cpanmが入っていないなら $ curl -L http://cpanmin.us/ | perl - App::LoadWatcher とすると楽です 使い方 ロードアベレージが「0.6」以上のときにuptimeを表示するには $ load_watcher -l 0.6 -- uptime こんな感じです。ハイフン2つ書いたあとにコマンドを書きます オ

    hamaco
    hamaco 2012/07/26
  • そろそろSTFのデータベース運用についてひとこと言っておくか - blog.nomadscafe.jp

    祝オープンソース化。 STF 分散オブジェクトストレージシステム http://labs.edge.jp/stf/ ライブドアのサービスで主に画像管理用に使っているSTFがオープンソースで公開されています。 Perl/PSGI、Q4M、MySQL、Apacheという、Webアプリケーションエンジニアにとってとてもなじみやすい構成を取っており、実際運用もしやすくなっています。 ただひとつ気になるのはMySQLのデータのデカさ。3億オブジェクト/10億エンティティを保存した段階でのMySQLのデータサイズは、約220GBにもなります。これを潤沢にメモリを積み、SSDを4RAID10にしたサーバにて運用しております。 データの取り回しも大変で、データのダンプに数時間、リストアに数十時間、レプリケーションが追いつくのにまた数時間と移設作業を行うのにまるまる一週間かかるような感じです。とってもカジ

    hamaco
    hamaco 2012/01/03
  • レプリケーション作成を簡単にする mysql40dump という mysqldump の wrapper を作った話 - blog.nomadscafe.jp

    みなさん mysqldump は好きですか? 自分はどっちでもありません。 MySQLでよくあるMaster-Slave構成を作る手順は以下のようになると思います MasterからSlaveとなるサーバに一貫性を保った状態のコピーをし、そのデータのバイナリログのファイル・ポジションをメモ。 SLAVEでデータをリストアし、Masterのホスト名、レプリケーションに使うユーザ名・パスワードとメモしたバイナリログのポジションをCHANGE MASTER文に渡し、START SLAVE 一貫性の取れたコピーを作成するためにmysqldumpやxtrabackup、LVMなどでのスナップショットが利用できますが、もっとも簡単な方法がmysqldumpだと思います。 mysqldumpで一貫性のあるデータをとり、その際のバイナリログポジションを記録するには $ mysqldump --single-

    hamaco
    hamaco 2011/12/27
  • Kansai.pm #14 に参加して発表しました - blog.nomadscafe.jp

    GrowthForecastについては、また別のエントリーとして詳しく紹介したいと思います。 kentaro氏のAPNs周りの実装のトーク、papix氏のYAPC::Asiaに行ってきたアツい話、またgardejo氏の汎用機で如何にPerlを使うかのLTなど面白く聞かせて頂きました。実はKansai.pmに参加するのは今回で2回目で、1回目は京都に住んでいる際に行ったlapis25氏のプレゼン中にもあった第六回だったりするのですが、その時と今回と共通して感じた事としてWebサービス以外の場所でもPerlが多く使われているんだなぁということがあります。普段Yokohama.pmに参加したり、社内で会話をしていると、ほぼ全てWebサービスに関連した話となってしまいますが、実際にはもっと広く、メインフレーム・汎用機上のプログラムを処理する為にPerlを使ったいたり、大学の研究で活用されているんだ

  • GrowthForecastというグラフ表示ツールで捗る話 - blog.nomadscafe.jp

    追記 2012/06/22 公式ページを作りました。そちらも参考にしてくださいませ GrowthForecast - Lightning fast Graphing / Visualization http://kazeburo.github.com/GrowthForecast/ Kansai.pmのLTでも紹介したんだけど、APIを叩く事でグラフを更新するツールを書きました。話の発端としては「cloudforecastのグラフを外からAPIで更新したい」ということでしたが、cloudforecastではグラフの追加が重い処理になってしまうので、別のプロダクトとしています。 サーバの負荷などのメトリクスを収集し、グラフ化することで、システムに掛かっている負荷を把握し、パフォーマンスに影響がでるまえに対策をうったり、改善の結果を知る事ができますが、同じ事はシステムだけではなく提供しているサ

  • チート対策とhttp_loadに仕掛けた罠の話 #isucon - blog.nomadscafe.jp

    完全に文化祭疲れで昼寝3時間ぐらいしてしまいましたが、懇親会で聞かせて頂いた話やblogやtwitterをみる限り好評だったようで、うれしく思っています。ISUCONに参加して頂いた方、社内で協力して頂いた方ありがとうございました いくつか至らぬ点がありますが、明日以降に公式にフォローさせて頂きたいと思っています。 さて、既に公開されているので見た方は多いと思いますが、今回ISUCONで使ったベンチマークツールは大きく分けて次の3つのツールに分かれています。 (1) 1post/secでコメントを投稿し、1秒後にコメントをしたページと、インデックスおよび適当な記事のDOMチェックを行う node.js (2) http_load + patch (3) css/js/imageのMD5値を検証する perl script 最終的な順位はhttp_loadが行ったリクエスト数で決まるのでもし

  • 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

    hamaco
    hamaco 2011/08/17
  • Webサーバ勉強会#3に参加してきました - blog.nomadscafe.jp

    紹介したrpmのspecファイル、設定ファイル、オレオレpatchなどはすべてgithubにあります。 rpm: https://github.com/kazeburo/rpm/tree/master/httpd_proxy patch: https://github.com/kazeburo/apache-httpd-patch あわせて読みたい プロのサーバ管理者がApacheのStartServers, (Min|Max)SpareServers, MaxClientsを同じにする理由 mod_expiresでExpiresとCache-Controlを上書きする 再掲: mod_proxyのretryを2段階にするpatch PSGIアプリケーションをリバースプロキシ下で使う際の静的コンテンツの配信方法について \n\n\n紹介したrpmのspecファイル、設定ファイル、オレオレp

  • ディレクターやエンジニアが運用エンジニアにインフラの相談をする際に持って来て欲しい5つのこと - blog.nomadscafe.jp

    新しいWebサービスを開始する際や、既存サービスに変更を加える際に、サーバを何台確保するか、ストレージやAPIといった共有リソースを使用して良いか、ディレクターやアプリケーションエンジニアの方に訪ねられることがありますが(というかそれが仕事ですね)、その際相談のためにどんな情報を持って来て欲しいか書いてみます。人間同様にサーバやネットワークリソースも有限なので、無駄にならない最適なサーバ台数を割り出したり、増強が必要かどうかを判断して、会社のビジネスを効率よく進めていくことが重要です。 人によっては以下に書いてあることが、非常に緩く感じでしまうこともあるかもしれません。これはWebサービスを早く立ち上げて、柔軟に運用していくことができる環境ならではだと思います。それでも出して欲しいモノはいくつかあります 企画書 どんなサービスであるか説明できる企画書があるといいでしょう。ないわけはないと信

    hamaco
    hamaco 2011/07/20
  • Webアプリケーションエンジニアはノマドであれ(特定のサーバに依存しない方法) - blog.nomadscafe.jp

    弊社では毎週水曜日はノーエンジニアデーなので、最近はMacbook AirとWIMAX持って外で仕事しています。意外と快適ですが、ここで書くのはサーバの使い方の話です。 ときおり、次のような状況に遭遇することがあります。 開発環境して使っているけど、セットアップをどのように行ったか残っていないので、新サーバへ移動できない 番環境だけど、セットアップをどのように行ったかわ(ry デプロイ元/管理ツールサーバとして使っているので古いサーバだけど捨てることができない DBがどこから参照されているか管理できていないので、サーバの入れ替えが困難 コードがどこから参照が把握できていないので、容易にサーバ構成の変更ができない 椅子^H^H 一度設置したサーバの移動なんてなかなかすることないと思う人はいるかもしれないけど、サーバが何の警告もなしに突然壊れて入れ替える必要がでてくるのはもちろん、インフラ技

    hamaco
    hamaco 2011/07/15
  • 今こそ見直すApacheの設定 - blog.nomadscafe.jp

    nginxやvarnishなどがアツいですが、Apacheもまだまだ実績や安定性から採用されていると思います。ここではデフォルトとは異なる値に変更するサーバ設定を中心に、パフォーマンス改善、安全性向上のためのApacheの設定を紹介します。 mpmの確認 > /path/to/bin/httpd -V Server version: Apache/2.2.19 (Unix) Server built: Jun 23 2011 17:13:13 Server's Module Magic Number: 20051115:28 Server loaded: APR 1.4.5, APR-Util 1.3.12 Compiled using: APR 1.4.5, APR-Util 1.3.12 Architecture: 64-bit Server MPM: Worker PreforkやW

  • メール受信をTriggerにしてコマンドを実行する代わりにMaildirを監視して負荷を削減する - blog.nomadscafe.jp

    サーバが重かった原因は別だったんだけど、某サービスでメールを受信してプログラムを起動する際のコストが大きいんじゃないかという話をしたので、以下のようなことを考えてみた。 qmailを使っている場合、届いたメールをプログラムで処理したい場合は .qmail に | /path/to/program.pl と書きます。標準入力にメールの内容が渡され、環境変数等を通して表書き発送者アドレス等が取得できます。postfix でも master.cf にtransportを追加し、mapファイルを変更すると大体同じことができます。 参考: RailsとPostfixで受信メールを処理する方法 ただし、この方法だとメールの受信の度にプログラムを起動(exec)するコストが高くなりがちです。特にデータベースに接続したり、アプリケーションのライブラリを読み込んで行くと起動の負荷が上がって行ってしまいます。

    hamaco
    hamaco 2011/06/19
  • 私家版省サーバ運用2011またはWebシステムのコンポーネントの配置について - blog.nomadscafe.jp

    小規模のサービスを如何にスモールスタートするか、そのために各コンポーネントをどうやって配置するのがいいのかという話。個人的な考えも含めて。 大まかな構成は昨年のnekokakさんのYAPC::Asiaでの発表、省サーバ運用と大体同じです。Web/Appに使うサーバ2台、データベース2台です。あとはLBが別にあればそれを、なかったらもう一台(組)必要となります。 Web/Appサーバには、Reverse Proxy、Application Serverがまず配置されます。あとは必要に応じてmemcached、Job Queueのworkerを動かします。ここまでのコンポーネントは2台のサーバ両方に配置し、Active-Activeで動作し冗長性がとれるよう構築します。cronについては、両方のサーバで動かしても問題がない状態が理想ですが、そうでない場合、Web/Appの1台目で動かすというル

    hamaco
    hamaco 2011/06/17
  • GreenBuckets ノード障害時の動作と復旧方法 - blog.nomadscafe.jp

    /* カラム名を変更しています 20110524 */ @kamipo さんが正座して待っているのを思いだした。 GreenBucketsで、ノードがダウンした時の動作と復旧方法です。GreenBuckets自体の動作実績はないのであくまで想定です。ただ、mixiの画像クラスタの構成をまねているので復旧方法もほぼ同じかもです まず、障害が起きて、復旧するまでの間を次の3段階にわけて対応を考えます 障害が発生し、アラート検知、運用者が対応するまで 運用者が対応を行い、一時復旧 データの整合性がとれ、完全復旧 ■ 障害が発生し、アラート検知、運用者が対応するまで さて、HDDが破損するなどしてサーバがダウンした場合、運用者が対応を行うまで、GreenBucketsは障害の影響をなるべく表に出さないよう、動作します 上の2つの図はノード1がダウンした状態を示しています。オブジェクトを取得する際(

  • Short-term Edge Cache (フロントサーバでの一時キャッシュ) - blog.nomadscafe.jp

    3日間で去年一年間分の花粉が悲惨したようです。元気です。 「HTTPコンテンツ圧縮はどのレイヤーで行うのがいいか」で書いたあたりと問題は共通しているのですが、大規模サイトの運用で最近割とボトルネックとなりやすいのはラック-集約スチッチ間のトラフィックです。1台あたりの性能が飛躍的に向上し、画像転送では100Mbps〜300Mbps、それ以上ぐらいは楽に吐き出すようになっているので、ラックスイッチの1Gbpsのuplinkではすぐに詰まってしまいます。この対策として、高トラフィックのサーバを分散配置したり、link aggregationにて2Gbps-4Gbpsに増速したり、あるいは10Gの導入を検討すると思いますが、それには手間もお金もかかるので、まずはトラフィックを減らせないか考えるわけです。 そこで最近、2カ所ほどでとった方法が、フロントのReverse Proxyで短時間、キャッシ

  • プロのサーバ管理者がApacheのStartServers, (Min|Max)SpareServers, MaxClientsを同じにする理由 - blog.nomadscafe.jp

    kazuhoさんが「プロのサーバ管理者の間では存在価値が疑問視されて久しい (Min|Max)SpareServers だと思う」と書いたり、hirose31さんが去年のYAPC::Asiaで{Start,{Min,Max}Spare}Servers,MaxClientsは同じにしているよと発表したり、実際前職のサーバはそのように設定されていたのですが、自分でうまく説明ができてなかったので、調べながら書いてみた。 当はイントラブログ用に書いていたものですが、がんばったので転載。 前提として、CPUの使用率におけるsystemとfork Re: クラウドがネットワークゲーム開発者にもたらしてくれたもの - blog.nomadscafe.jpでも書いている通りforkってのはサーバにとって重い部類の処理になります。つまり負荷の高いときにforkを大量に行うのはしてはならないことの1つです。