タグ

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

  • Retty Tech Cafe #5 で「メルカリにおける、継続的なアプリケーション改善を支える技術」という発表をしてきました - blog.nomadscafe.jp

    “SRE”がテーマで2016/03/12に開催されたRetty Tech Cafe #5 で「メルカリにおける、継続的なアプリケーション改善を支える技術」という発表をしてきました。 私の発表資料はspeckerdeckにて公開しました。 デプロイや監視まわりでメルカリのSREがやっていることをまとめてみました。参考になれば幸いです。 元GoogleのSREであるRettyのCTO、樽石さんの発表では、SREが目標とする指標について簡潔にまとめられていて、とても参考になりました。自動化やクラウドが提供するサービスが中心となりやすいインフラとはちょっと違う切り口で、アプリケーションのパフォーマンスやサービスの信頼性を確保する方法、その考え方について短い時間でしたが情報交換できました。ありがとうございましたー。 SREの活動についてもっと喋れる場があるといいなー。

    hamaco
    hamaco 2016/03/16
  • PHP BLT#1でLTしてきました - blog.nomadscafe.jp

    PHPの勉強会なので、いままでお会いしたことのない方とお話ができてよかったです。 発表内容は大きくなってしまったmaster.phpファイルをどうやって高速に読むかというお話です。PHPではリクエストの終了とともに全てのメモリを捨ててしまうので、変わらないデータもリクエストの度にキャッシュからロードしなくてはいけません。大きなphpファイルがあれば当然毎回の読み込みがオーバーヘッドとなってきます。そんな環境でどうやってアプリケーションのパフォーマンスをあげていったのかを紹介しています。 スライドの中でfile sizeを小さくする必要があると書きましたが、@hnwさんによると、VM命令が多過ぎるのが問題で、構造を簡単にしたことでVM命令が減ったのがよかったのではとのことでした。非常に参考になりました。ありがとうございました \n\n\nPHPの勉強会なので、いままでお会いしたことのない方と

    hamaco
    hamaco 2015/11/28
  • ISUCON5にチーム「GoBold」で参加して特別賞と3位でした - blog.nomadscafe.jp

    そろそろ傷が癒えてきた。。 ISUCON5の選にメルカリのインフラ改めSite Reliability Engineerで結成したチーム「GoBold」で参加して、最も速く決められた得点に到達したチームに与えられる特別賞と最終的に3位となりました。チームメンバーは @cubicdaiya、@shmorimo、@kazeburo の3人です 出題のtagomorisさん、kamipoさん、運営の941さん、LINEの皆様、テコラスの皆様ありがとうございました。 ソースコードとやったこと。 こちらにて公開しています https://github.com/kazeburo/isucon5-final-public 構成は、Nignx + Perl + PostgreSQL + memcachedです。 課題となったサイトは、データベースに格納してある情報からいくつかのAPIに問い合わせて、その

  • ISUCON5予選に参加して2位で予選通過しました - blog.nomadscafe.jp

    ISUCON5 の予選にメルカリのインフラ系エンジニアで結成したチーム「GoBold」で参加して、無事2位で通過しました。チームのメンバーは、@cubicdaiya、@shmorimo、@kazeburoの3人で、普段から横にならんで座って、メルカリのパフォーマンス改善やサーバ環境の整備に携わっています。 今回の予選問題、ずいぶん盛ってきたなーというのが最初の印象。モリスさんも予選問題を選のようにしたいと言っていたし、その通りになっていました。マシンの性能に対しての扱うデータ量もメモリに乗り切らないであろうスレスレのラインでkamipoさんの調整も神だなと思いました。おかげでやることが満載だし、素晴らしい問題でした。運営の941さんも含め当にお疲れさまでした。選もよろしくお願いします。 チームのメンバーのblog ISUCON5予選 2位で通過しました - 考える人、コードを書く人

  • 「100万円欲しいかー!」「おー!!」YAPC::Asia Tokyo 2015 で「ISUCONの勝ち方」を喋って来た - blog.nomadscafe.jp

    技術的な内容も後半にありますが、ISUCONがどうして始まったのか、ISUCONで良い成績をだすためにはどんな準備をして、チューニングのためにどんなことを考え、調査するのが良いのかについて喋ってきました。 発表が2日目の朝イチでしたが、多くの方にきて頂き、ありがとうございます。この発表でISUCONになるべく多くの方に興味を持って頂き、参加する方が増えればいいなと思ってます。 今年のISUCONの参加者募集はすでに始まってます。 ISUCON5 オンライン予選の参加登録を開始&参加チームとメンバーリスト : ISUCON公式Blog ぜひ、ご応募ください。私はメルカリのインフラチームのエンジニアと共に出場します。よろしくお願いします。 Lightning Talk @uzulla氏がPHPの話を所望されていたので、PHPのエラーログ周りを整理しつつNorikraの話をしました 1日目にLi

    hamaco
    hamaco 2015/09/02
  • 株式会社メルカリに入社しました - blog.nomadscafe.jp

    入社なう pic.twitter.com/OSi3NaCAnV — masahiro nagano (@kazeburo) February 2, 2015 1000万ダウンロードと会社の2周年という記念の日に入社しました。 2周年を迎えたメルカリ、ダウンロード数は1000万超に - TechCrunch iOS、Androidアプリのダウンロード数はもちろん、商品の出品数や流通額も大幅に伸びています。また、アメリカでの展開等も進んでいるので、サーバ・フロントのエンジニアを募集しています。ご興味のある方はぜひご連絡くださいませ。 3月には六木ヒルズへのオフィス引越も予定されています。mixi入社前にlivedoorのセミナーでヒルズへ行ってから9年。ここに通うことになるとは思いもしませんでした。 今後の仕事 仕事は変わらずサーバ周りの運用・パフォーマンス改善、スケーラビリティの向上です。

    hamaco
    hamaco 2015/02/03
  • Unicornの2倍のパフォーマンスを実現したRackサーバ「Rhebok」をリリースしました - blog.nomadscafe.jp

    “Hello World”なベンチマークでUnicornに比べ2倍高速に動作するRackサーバをリリースしました。 rubygems: http://rubygems.org/gems/rhebok github: https://github.com/kazeburo/rhebok PerlのGazelleをベースに作っています。Rackアプリケーションの運用経験がほぼないので、機能不足があると思います。issue等で教えて頂ければ幸いです。 なぜ高速に動作するアプリケーションサーバが必要なのか Unicornは高速に動作します。多くのアプリケーションにとっては十分でしょう。それでもRhebokでさらに上のパフォーマンスを出そうとしたのは、技術的なチャレンジの他に以下のようなアプリケーションで高速なアプリケーションサーバが必要とされると考えているからです。 ソーシャルゲーム、広告サーバ、

    hamaco
    hamaco 2014/12/19
  • ISUCON4 で優勝してきました!!! #isucon - blog.nomadscafe.jp

    去年に引き続き、ISUCONにLINEの選抜チーム「チーム生ハム原木」で出場して優勝することが出来ました!!!! @tagomoris、@sugyan お疲れ様でした!! #isucon 2014で優勝しました - すぎゃーんメモ 最後の最後、残り15分でnginxの設定を行う場所を間違えていたということに気付き、ローカルのベンチマークでしか検証ができず、どの程度のスコアになるのか、またfailするのか分からない状況でしたが、結果的に良いスコアになってほっとしました。 自分でも何度も言いながら「nginxのrewriteはinternal redirect」の大原則を忘れていました。はい。1日100回唱えるようにします。 予選アプリケーションの復習 劇的なスコアは出ていませんが、地道に復習をしていて、 $ ~/benchmarker bench --workload 8 07:26:29

  • LINE選抜で isucon4 予選に参加してきました。暫定スコア「51192」を出すためにやったこと - blog.nomadscafe.jp

    今年もこの季節がやってきました。 今年のISUCON4は出題がクックパッドになりました。自分たちは去年に引き続き @sugyan @tagomoris とLINE選抜チームを組んで参加しました。 共催枠なので予選免除で選には出れるのですが、場数も重要だと去年参加して分かったので予選も参加しました。参加は1日目の土曜日です。 結果は「51192」ランキングには入りませんが、10位相当のスコアになります。言語はPerlです。ちなみに、2日目のベンチマークツールでも実行しましたが同等のスコアがでました。 準備 とりあえず、会社のchatに専用のchannelをつくり、@sugyan @tagomorisと簡単に確認し、去年の自分たちが用意したwikiを読み直しておこうと話をしました。 去年の選前と同じく、使うであろうソフトウェアについては、コピペでインストールができるように準備しておきました

    hamaco
    hamaco 2014/10/06
  • YAPC::Asia Tokyo 2014 で LT と、Docker についての発表をしてきました - blog.nomadscafe.jp

    うしろのばやしさんにラーメンと一緒に飲み込まれてしまった感がありますが、PSGI/Plackのパフォ厨としては、どうしても現状を報告しておきたい内容でありました。unicornに勝ちたい!! 2日目の朝イチというコマでありましたが、大勢の方に見に来て頂いて驚きました。前半の内容を盛り込みすぎて時間が足りなくなってしまい、すみませんでした。アンケートで既にDockerを使っている方が凄く多かったので、インストールの部分とかは飛ばしてもよかったんじゃないかと思いましたが、Dockerを使う上で少しでも役に立てば幸いです。 ベストトーク賞 うずらさんのPHP発表は内容面白かったし、喋りはうまいし、スライドも作り込んであってさすがという感じでした。ベンチマークで自分がLTで紹介したオプションを使って頂いて嬉しかった。時代はPHP その他のトークではgugodの「One layer down bel

  • blog.nomadscafe.jp

    PHPの勉強会なので、いままでお会いしたことのない方とお話ができてよかったです。 発表内容は大きくなってしまったmaster.phpファイルをどうやって高速に読むかというお話です。PHPではリクエストの終了とともに全てのメモリを捨ててしまうので、変わらないデータもリクエストの度にキャッシュからロードしなくてはいけません。大きなphpファイルがあれば当然毎回の読み込みがオーバーヘッドとなってきます。そんな環境でどうやってアプリケーションのパフォーマンスをあげていったのかを紹介しています。 スライドの中でfile sizeを小さくする必要があると書きましたが、@hnwさんによると、VM命令が多過ぎるのが問題で、構造を簡単にしたことでVM命令が減ったのがよかったのではとのことでした。非常に参考になりました。ありがとうございました そろそろ傷が癒えてきた。。 ISUCON5の選にメルカリのインフ

  • GitHubとDocker HubのAutomated Buildを組み合わせてGrowthForecastのDocker imageの作成を自動化したハナシ - blog.nomadscafe.jp

    タイトルがそのままですが、GrowthForecastのDocker imageを作りました。 https://registry.hub.docker.com/u/kazeburo/growthforecast/ 使い方は単純に起動するだけなら次のようになります。 $ docker run -p 5125:5125 kazeburo/growthforecast これだと、データが永続化されないので、適当なボリュームをマウントします。 $ docker run -p 5125:5125 -v /host/data:/var/lib/growthforecast kazeburo/growthforecast 起動オプションを変更したい場合は、コマンドを渡すか、Dockerfileを書いてビルドすると良いでしょう。 $ docker run -p 5125:5125 -v /host/dat

  • listen()のbacklogが不足した際のTCP_DEFER_ACCEPTの動作について - blog.nomadscafe.jp

    TCP_DEFER_ACCEPTは、LinuxでサポートされているTCPのオプションで、サーバ側で使用した場合にはaccept(2)からのブロック解除をTCP接続が完了したタイミングではなく最初のデータが到着したタイミングで行ってくれるオプションです。 Webサーバ・アプリケーションサーバではリクエストが到着してからaccept(2)のブロックを解除するので、リクエストの到着をWebサーバ・アプリケーションサーバで待つ必要がなくなり、特にprefork型のサーバでは効率的にプロセスを使えるようになるという利点があります。PerlではStarletがこの機能を有効にしています ところが、某サービスでTCP_DEFER_ACCEPTが有効にも関わらず、accept後のreadでデータが読めず、最悪の場合、デフォルトのtimeoutである5分間プロセスがストールすることがありました。strace

    hamaco
    hamaco 2014/05/10
  • Vagrantのprovisionerを使ってmroongaのrpmを作る方法 - MySQL Casual Advent Calendar 2013 - blog.nomadscafe.jp

    このエントリーはMySQL Casual Advent Calendar 2013 11日目の記事です。2011年のAdvent CalendarはQ4Mの導入方法を書いたので、今回はmroongaを書きます。 lestrratさんのエントリにもありますが、某サービスの検索システムをmroongaに置き換えるってのを準備しています。今のところメモリ64GB/ioDriveなマシンに、番で想定している倍の量の9000万件/台の記事データをストレージモードで突っ込んでいますが、遅くても0.5秒ぐらいで検索結果が得られるのでなかなか上々です。 mroongaを導入している環境は、CentOS6系でMySQLは5.6系を使っています。MySQLOracle公式rpmです。mroongaの公式サイトで配布しているrpmはOS付属のMySQLのバージョンに合わせたrpmなので、Oracle公式rp

    hamaco
    hamaco 2013/12/25
  • memcached おすすめ起動オプションまとめ - blog.nomadscafe.jp

    ここを書き直して転載 memcachedに関する記事は「第1回 memcachedの基:memcachedを知り尽くす|gihyo.jp … 技術評論社」など何回か書いていますが、最近のmemcachedでの起動オプションのおすすめをまとめてみようと思います。なおこの記事はMemcached Advent Calendarではありません。 まとめるとこんな感じです。 $ memcached -v -p 11211 -U 0 -u memcached -m 1024 \ -c 100000 -t 4 -C -B ascii ひとつずつ簡単に紹介します。 -v ログ出力 ログを verbose モードで起動します。エラーや警告が表示されます。弊社ではmemachedをdaemontools経由で起動し、ログを記録しています。 -v -vオプションは -vv、-vvv と v の数を増やす事で

  • ISUCON3 で優勝してきました!!! #isucon - blog.nomadscafe.jp

    いやぁ、、ほっとした。予選はこっちのblogに書かないぐらい惨敗した気分だったのでよかった。勝たなければ「LINE選抜大した事無い」とか「元出題者wwww」とか言われるし、勝ったら「#茶番」とか言われる立場でしたが、まじほっとしました。やったぁぜぇぇえぇえ!!! (写真は http://isucon.net/archives/33919770.html から引用) チームは、@tagomorisさん、@sugyanさんとの「LINE選抜チーム」です。お疲れ様でした!! isucon3戦いってきた&勝ってきた! #isucon - tagomorisのメモ置き場 #isucon 2013で優勝しました - すぎゃーんメモ 最終的なコードや設定などはこちらのリポジトリ 予選で学んだこと 予選のときは、開始直後からアプリケーションをみて明らかに重そうなところから手をつけていって、序盤からスコア

  • G-WANはなぜ速いのか?をnginxと比べながら検証してみた - blog.nomadscafe.jp

    ツチノコブログのWEBサーバベンチマークツール比較の記事で紹介されていた。WebサーバのG-WAN。この記事によると凄く速いようです。 Intel Xeon E5-2640 (6コア/12スレッド 2.50GHz) を2つというサーバで gwan  334944 req/s nginx 111842 req/s と、速いと言われているnginxの3倍の速度を出しています。 このベンチマーク結果がとても気になったので、なぜG-WANが速いのか、自分でも検証してみました。 結論から言うと以下の2つ。 1) G-WANはデフォルトで物理CPUに合わせた数のスレッドを起動する 2) HTMLファイルも一度読み込んでキャッシュする という事です。 今回はAWSのcc2.8xlarge(E5-2670 8コア/16スレッド 2.60GHz *2)を使ってベンチマークを行いました。OSはAmazon L

    hamaco
    hamaco 2013/09/04
  • Monoceros というPrefork型だけどC10Kの接続を捌くことができるPSGI/Plackサーバ書きました - blog.nomadscafe.jp

    Monoceros というPSGI/Plackサーバ書きました https://metacpan.org/release/Monoceros https://github.com/kazeburo/Monoceros StarmanやStarletのようなPreforkなアプリケーションサーバでは、コネクションの維持イコールプロセスの占有なので、HTTPのKeepAliveは無効にするのが一般的ですが、負荷の高いサービスではTIME_WAIT状態のソケットが溜まったり、SYN-ACKの再送問題などあり、KeepAliveを使いたいという欲求があったりなかったりします。 Monoceros はリクエストを処理するworkerの他に、イベントドリブンで動くコネクション管理プロセスを立てて、クライアントからの接続ソケットをunix domain socketを使いプロセス間でやりとりします。待機

    hamaco
    hamaco 2013/05/21
  • apachectl -k restart は stop && start じゃないので気をつけましょう - blog.nomadscafe.jp

    Apacheを起動するときに使う事もある apachectl の -k restart は stop && start ではないので注意しましょう。 ServerLimitやThreadLimitなどの一部の設定は、restart では適用されず、stop && start が必要になります。 apachectl は実はshellscriptで出来ています。中をのぞくと #!/bin/sh .. HTTPD='../httpd' .. start|stop|restart|graceful|graceful-stop) $HTTPD -k $ARGV ERROR=$? ;; と書かれています。restartはhttpdコマンドにそのまま渡されるようです。 そこでhttpdコマンドのドキュメントを読むと詳しくは Stopping Apache httpd http://httpd.apach

    hamaco
    hamaco 2013/02/01
    これハマったことあるなぁ。
  • ウェブオペレーションエンジニアはリリース前のソースコードのココを見ているッ! - blog.nomadscafe.jp

    「ウェブオペレーションエンジニアはリリース前のソースコードのココを見る!」みたいな記事があればいいね — masahiro nagano (@kazeburo) November 20, 2012 ちょいと前にツイートしたこの件のまとめ。新規サービスのリリースや既存サービスに新しい機能が追加される際に、しばしばそのソースコードを確認しているのですが、僕がどんなところを見ているのかまとめてみました。 そのサービスへの導線とランディングページの確認 まず、そのサービスへの導線やランディングページを確認します。そしてその一番アクセスがあろうページ、一つか二つに確認対象を絞ります — masahiro nagano (@kazeburo) November 20, 2012 どんな素敵なサービスも、機能も適切な誘導がなければ使われる事はありません。また誘導次第では大量のアクセスが一度にサーバに対し

    hamaco
    hamaco 2012/12/07