タグ

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

  • 今こそ見直す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

    oppara
    oppara 2016/06/14
    今こそ見直すApacheの設定 - https://t.co/vOdXdsbxt7 B!
  • Retty Tech Cafe #5 で「メルカリにおける、継続的なアプリケーション改善を支える技術」という発表をしてきました - blog.nomadscafe.jp

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

    oppara
    oppara 2016/03/31
    Retty Tech Cafe #5 で「メルカリにおける、継続的なアプリケーション改善を支える技術」という発表をしてきました - https://t.co/vOdXdsbxt7 B!
  • ISUCON5予選に参加して2位で予選通過しました - blog.nomadscafe.jp

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

    oppara
    oppara 2015/09/28
    ISUCON5予選に参加して2位で予選通過しました - http://t.co/vOdXdsbxt7 B!
  • 「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

    oppara
    oppara 2015/09/02
    「100万円欲しいかー!」「おー!!」YAPC::Asia Tokyo 2015 で「ISUCONの勝ち方」を喋って来た - http://t.co/vOdXdsbxt7 B!
  • MyNA(MySQLユーザ会)会 2015年8月 でメルカリのデータベース戦略とPHPについて喋って来た - blog.nomadscafe.jp

    kamipoさんOracle ACEおめでとうございます。 MyNA(MySQLユーザ会)会 2015年8月 でメルカリのデータベース戦略とPHPについて喋って来たので、資料を公開します。 内容はWEB+DB PRESS Vol.88の記事に書いたこと+新ネタと、PHP(PDO)の話です。MySQL 5.7のところにみなさん驚かれていたようです。 他の方の発表では、dimSTATが面白かったですね。あのグラフをどうやって作っているのか全くしらなかったので、勉強になりました。あれはベンチマークしたくなります。また、MySQLで困っている人をみつけて助けてあげようとするkamipoさんの情熱も、どこから沸いてくるのか不思議ですが、さすがでした。 開場のyoku0825さんありがとうございました。みなさまお疲れさまでした。 実は、この会で喋る事をすっかり忘れていて、YAPC::Asiaの懇親会の

    oppara
    oppara 2015/09/02
    MyNA(MySQLユーザ会)会 2015年8月 でメルカリのデータベース戦略とPHPについて喋って来た - http://t.co/vOdXdsbxt7 B!
  • Mackerel meetup #4, Shibuya.pm Tech Talk #17、Norikra meetup #2 で喋って来た & YAPC::Asia Tokyo 2015のトークに応募した話 - blog.nomadscafe.jp

    久しぶりに喋ってきました。Mackerel meetup #4とShibuya.pm Tech Talk #17ではLTを、Norikra meetup #2では少し長めの話をさせて頂きました。 資料3つ貼っておきます。 メルカリでもサーバ・運用周りの仕事をしています。メルカリではzから始まるモニタリングツールをメインに使用していて、サーバ周りのさまざまなデータを突っ込んで監視に役立てていますが、カジュアルにグラフをつくって、アラートを仕掛けるという用途には向いていないなぁと思ってます。 そこで、Norikra と Mackerelを組み合わせて柔軟にログの可視化+閾値の設定を行うってのを思いついて設定したところ、結構うまく行って、それについてtwitterでつぶやいていたところ、今回のような機会を頂いたというわけです。 harukasanのログ解析ツールのまとめは非常にわかりやすく、fu

    oppara
    oppara 2015/06/08
    Mackerel meetup #4, Shibuya.pm Tech Talk #17、Norikra meetup #2 で喋って来た & YAPC::Asia Tokyo 2015のトークに応募した話 - blog.nom…
  • h2o と server_starter で graceful restart with Docker - blog.nomadscafe.jp

    h2o はserver_starter経由のgraceful restartをサポートしているので試してみた。ついでにdockerで動かしてみた。 h2o/h2o 実際にwrkでベンチマークしながらコンテナにHUPシグナルを送り、graceful restartを行ってみたのが次の動画 左上がh2oをdocker経由で起動しているウィンドウ、HUPを受けてh2oのプロセスを入れ替えている様子がわかります。。左下はwrkの実行、右側はコンテナにHUPを送ってます。 HUPシグナルはdocker killを使って送ります。 $ docker kill --signal="HUP" $(docker ps |grep kazeburo/h2o|awk '{print $1}') wrkの結果はこんな感じ。エラーは出ていません vagrant@vagrant-ubuntu-trusty-64:~/

    oppara
    oppara 2015/02/11
    h2o と server_starter で graceful restart with Docker - http://t.co/vOdXdsbxt7 B!
  • 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

    oppara
    oppara 2014/11/11
    ISUCON4 で優勝してきました!!! #isucon - http://t.co/oxgJj9PdKf B!
  • LINE選抜で isucon4 予選に参加してきました。暫定スコア「51192」を出すためにやったこと - blog.nomadscafe.jp

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

    oppara
    oppara 2014/09/30
    LINE選抜で isucon4 予選に参加してきました。暫定スコア「51192」を出すためにやったこと - http://t.co/oxgJj9PdKf B!
  • 「ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版」を公開しました - blog.nomadscafe.jp

    昨日のエントリで紹介した「Webアプリケーションの パフォーマンス向上のコツ 実践編」ですが、いくつかスライドを追加して、「完全版」として公開しました。 ISUCONだけに限らず、一般的なWebアプリケーション、SQLのチューニングの参考となる資料となっていると思いますので、見て頂けたら嬉しいです。 <追記> ISUCON4 オンライン予選の参加登録が開始されています!!!Webアプリケーションを書いている方もインフラを扱っているエンジニアも運用エンジニアも、ぜひチャレンジしてください!!私もでます!! 参加はこちらから↓↓↓↓ ISUCON4 オンライン予選の参加登録を開始しました \n\n\nISUCONだけに限らず、一般的なWebアプリケーション、SQLのチューニングの参考となる資料となっていると思いますので、見て頂けたら嬉しいです。\n\n## <追記>\n\nISUCON4 オン

    oppara
    oppara 2014/08/27
    「ISUCONで学ぶ Webアプリケーションのパフォーマンス向上のコツ 実践編 完全版」を公開しました - http://t.co/oxgJj9PdKf B!
  • 「ISUCON 夏期講習 2014」のサーバ環境 AMI を公開しました - blog.nomadscafe.jp

    学生さん限定のイベント「ISUCON 夏期講習」今年もやりました。イベントは、tagomorisからISUCONやWebアプリケーションについての座学を行ったあとに、ISUCON3の予選問題にチャレンジをしてもらいました。またチャレンジをしてもらいながら、どのようにWebアプリケーションのパフォーマンスをあげていったらよいのか、自分の方から説明をしました。今年はスコアをあげることができる参加者が多く、驚きました。 去年と同じようにISUCONの問題にチャレンジする環境としてEC2を使いましたので、そのAMIを公開します。 AMI ID:ami-e796b3e6 AMI Name: isucon_summer_class_2014 Region: Asia Pacific (Tokyo) 「ISUCON 夏期講習 2014」サーバのつくりかた EC2のインスタンスを起動する際に、上記のAMI

    oppara
    oppara 2014/08/27
    「ISUCON 夏期講習 2014」のサーバ環境 AMI を公開しました - http://t.co/oxgJj9PdKf B!
  • 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

    oppara
    oppara 2014/07/10
    GitHubとDocker HubのAutomated Buildを組み合わせてGrowthForecastのDocker imageの作成を自動化したハナシ - http://t.co/tDS29v86Li B!
  • VagrantのVMを使い捨てる。vagrant-destroy-provisionerをリリースしました - blog.nomadscafe.jp

    最近、Vagrantのprovisionerを使ってパッケージの作成などをいくつか行っているのですが、その際にVMを落とし忘れ、ホストしてるマシンの余計なリソースを使ってしまっていることがあります。 なので、provisionerでサーバをdestroy/haltするやつを書いてみました。 rubygems: https://rubygems.org/gems/vagrant-destroy-provisioner github: https://github.com/kazeburo/vagrant-destroy-provisioner 勝手にshutdownしてイメージを破棄するデモ動画です。 インストールはvagrant pluginコマンドから行います。 $ vagrant plugin install vagrant-destroy-provisioner 使い方はこんな感じ

    oppara
    oppara 2014/07/10
    VagrantのVMを使い捨てる。vagrant-destroy-provisionerをリリースしました - http://t.co/tDS29v86Li B!
  • plenvやxbuildで使っているperl-buildを信頼性の向上目指してアップデートしました - blog.nomadscafe.jp

    plenvやxbuildで使っているperl-buildなのですが、ひろむ氏からコミット権限頂いてアップデートをしました。 変更点としてはいつでも使えるように search.cpan.org への依存度を減らしたことと、だれでも同じように作業ができるよう依存モジュールを1つのスクリプトにまとめるfatpackにDockerを導入して自動化した点です。 search.cpan.org への依存度の削減 perl-buildperlのバージョンを引数に渡してインストールを行います。 $ perl-build 5.20.0 /opt/perl-5.20 この際に、渡されたperlのバージョンからアーカイブのパスを調べる必要があります。アーカイブのパスとは以下のようなものです R/RJ/RJBS/perl-5.21.0.tar.gz R/RJ/RJBS/perl-5.20.0.tar.gz R/

    oppara
    oppara 2014/07/10
    plenvやxbuildで使っているperl-buildを信頼性の向上目指してアップデートしました - http://t.co/tDS29v86Li B!
  • 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

    oppara
    oppara 2014/05/09
    listen()のbacklogが不足した際のTCP_DEFER_ACCEPTの動作について - http://t.co/tDS29v86Li
  • dstat + fluentd + Graphite + Grafana でサーバモニタリングする - blog.nomadscafe.jp

    ES + kibanaでサーバモニタリングをやってみたのですが、ESのCPU負荷がかなり高くて、リアルタイムにモニタリングできない状況だったので、graphite + grafanaにしてみた。ちなみに、ESのサーバのCPU負荷はこんな感じ。 GrafanaはGraphite用のDash boardを作るツール。最近、influxDBにも対応していてなかなか野心的。 Grafana - Graphite Dashboard kibanaをforkしただけあって、画面はそっくり。まだ修正もれがあるのか、メッセージにkibanaって文字がでてくることもある セットアップ もろもろのセットアップのメモ 監視サーバ まず、監視サーバにGraphiteとGrafanaをいれる。環境はCentOS6 CentOS6.x - CentOSにRPMでGraphite+Diamondをインストールする -

    oppara
    oppara 2014/04/22
    dstat + fluentd + Graphite + Grafana でサーバモニタリングする - http://t.co/tDS29v86Li
  • dstat + fluentd + Elasticsearch + kibana でサーバモニタリングする - blog.nomadscafe.jp

    普段はサーバのメトリクス可視化のためにcloudforecastを使っていますが、某案件用に数秒単位で数十台のサーバのメトリクスを表示したいので、記事タイトルのような構成を作ってみた。 dstatでとった各種値の他に、nginxとmemcachedの情報も合わせて表示させています。 セットアップ もろもろのセットアップのメモ 監視サーバ まず、監視サーバにElasticsearchとkibanaをいれる。環境はCentOS6 $ sudo yum install java-1.7.0-openjdk $ sudo rpm -Uvh https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.x.x.noarch.rpm Elasticsearchは特に設定なく起動 $ sudo service

    oppara
    oppara 2014/04/05
    dstat + fluentd + Elasticsearch + kibana でサーバモニタリングする - http://t.co/tDS29v86Li
  • 一時ファイルとdentry cacheとメモリ - blog.nomadscafe.jp

    わりと長い間悩んでいたんだけど、最近解決したのでメモ。 サービスで利用しているsmalllightの画像変換サーバが、Apacheが使っているメモリ以上のメモリを使用し、Swapしたりメモリ枯渇でサーバがダウンするなどのことが何度かありました。 ↑メモリの動きはこんな感じ いろいろ調べた結果「dentry cache」なるものがメモリ多くを占めていることがわかりました。dentry cacheはディレクトリやファイル名とinodeとを結びつけに使われるキャッシュです。smalllightでは画像を変換する際に一時ファイルを作成するので、その情報が残るようです。 手元で再現させる 番で使っているサーバはCentOS5系ですが、手元のVagrant上のCentOS6(ファイルシステムはext4)で、再現させてみました。 use Parallel::Prefork; use File::Tem

    oppara
    oppara 2014/01/09
    一時ファイルとdentry cacheとメモリ - http://t.co/oxgJj9PdKf
  • CentOS 6.5にDockerいれてGrowthForecastを動かしてみた - blog.nomadscafe.jp

    ちょっとずつ試してる。環境は以下。 MacOS X 10.8 VirtualBox 4.3.2 Vagrant 1.3.5 Packer v0.4.0 packer でCentOS6.5のイメージを作る まず、packerを使ってCentOS 6.5のイメージを作るところから。テンプレートはgithubにあげてます。 $ git clone https://github.com/kazeburo/my_packer.git $ cd my_packer $ packer build centos6.5.json テンプレートは https://github.com/hnakamur/my-packer-template-files を参考にさせて頂きました。 このあとの作業が楽になるようにCentOS 6.5をインストールしたあとに、yum groupinstall "Developmen

    oppara
    oppara 2013/12/31
    CentOS 6.5にDockerいれてGrowthForecastを動かしてみた - http://t.co/oxgJj9PdKf
  • 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

    oppara
    oppara 2013/12/31
    Vagrantのprovisionerを使ってmroongaのrpmを作る方法 - MySQL Casual Advent Calendar 2013 - http://t.co/oxgJj9PdKf