タグ

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

  • 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

  • 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 の数を増やす事で

    oinume
    oinume 2013/12/12
    -Iは使ってるなー
  • 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

  • Test::TCP でサーバが起動するまで待つ時間を変更する - blog.nomadscafe.jp

    追記: 1.30でsleepとretryのデフォルトが変更になりました。詳しくはドキュメントを参考にしてください 追記2: 2.00でsleepとretryがなくなりました。代わりにmax_waitが追加されました。詳しくはドキュメントを参考にしてください。blogも書いた TCPサーバ・クライアントのテストには欠かせない、みんな大好きtokuhiromのみんな大好きTest::TCP。Plackのサーバのテストなら use Plack::Loader; use Test::TCP; test_tcp( server => sub { my $loader = Plack::Loader->load( 'Monoceros', port => $port, max_workers => 5 ); $loader->run($app); exit; }, client => sub { my

  • isucon2 を開催しました。あるいは、優勝組の5倍のスコアを出す方法 - blog.nomadscafe.jp

    去年の第一回では、次の日に3時間の昼寝をしていたようですが、今年は開催中に体調を崩してしまい、参加者の皆様がハックをしている最中にクッションで横になっているという状態になってしました。セットアップの不手際と合わせて申し訳ないと思っています。また家の事情的なこともあり、準備段階であまり協力できなかった中、ibuchoさん、941さん、やぶたさん、tagomoris、sugyanには感謝しております。そして参加者、協力して下さった方みなさまに感謝しております livedoor Techブログ : #isucon2 リアルタイムフォトレポート 更新終了 livedoor Techブログ : #isucon2 参加者・関連エントリまとめ tagomoris/isucon2 - GitHub ISUCON2では課題となったチケット販売サイトのアプリケーションの作成はsugyanが行い、ベンチマークツ

  • 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、そしてテスト中

  • GrowthForecast のデータストアに MySQL が使えるようになりました - blog.nomadscafe.jp

    これまで GrowthForecast のグラフ一覧や直近の数値などのデータはSQLiteに保存していましたが、パフォーマンスの問題がありそうということで、MySQL も利用できるようにしました。 移行ツールなどはありませんが、既にGrowthForecastを使っていて、MySQLを使いたい場合は、依存モジュールが増えているので以下のコマンドを実行し、モジュールの追加を行ってください。 $ git pull $ perl Makefile.PL $ cpanm --installdeps . テーブルはgrowthforecast.plの起動に自動で作られるので、MySQLにデータベースの追加とユーザの設定を行って下さい。 mysql> CREATE DATABASE データベース名; mysql> GRANT CREATE, DELETE, INSERT, UPDATE, SELECT

  • nginx-1.1.x で httpなupstreamにもkeepaliveができるようになったので検証してみた - blog.nomadscafe.jp

    画像配信など大量にアクセスを捌く際にちょっと気になっていたhttpなupstreamとkeepaliveできない件が、nginx-1.1系でできるようになったので試してみた 今回keepaliveできるようになったのは↑のbackendと通信するところ。 家のドキュメントはこちら http://nginx.org/en/docs/http/ngxhttpupstream_module.html#keepalive keepalive機能を使うには、以下のように設定します http { upstream backend { server 127.0.0.1:5000; keepalive 16; } server { listen 8080; server_name localhost; location / { proxy_http_version 1.1; proxy_set_head

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

  • Q4Mを簡単に導入する方法 - MySQL Casual Advent Calendar 2011 - blog.nomadscafe.jp

    xaicronとネタが被ったようだけど気にしない>< livedoorでOperations EngineerやってるkazeburoだYo。最近livedoorからオープンソース化された3億ファイルを管理してるオブジェクトストレージ「STF」でも使ってるMessage QueueのQ4Mのインストール方法を紹介するよ! カジュアルだからインストールだけ! 知ってる人も多いと思うけどQ4Mはkazuhoさんによって開発されたMySQLのストレージエンジンとして実装されてるMessage Queue。livedoorではもちろん、mixiやDeNAをはじめソーシャルゲーム各社でも使われている。 Message Queueの説明や使い方はDIS_COMMENTでテーブルスペースフルの神様が書いてるので参考になるね! Perl Hackers Hub 第10回 ジョブキューで後回し大作戦―Th

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

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

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

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

  • OrePANとcpanmでCPANの部分ミラーを作ってCPANモジュールを管理する - blog.nomadscafe.jp

    これまでサービスで使うCPANモジュールの管理と言えばrpm/debパッケージが主流だと思いますが、最近ではperlbrewで使いたいバージョンのperlをインストールすることもあり、rpm/debでは対応できなくなってきています。 perlbrewのperlに対してプロジェクトが依存しているCPANモジュールを入れる際、 $ perlbrew switch perl-5.12.3 $ cd /path/to/MyProj $ perl Makefile.PL $ cpanm --installdeps . などと cpanm —installdeps が使えます。 しかし、これではサーバを新規セットアップするたびに、最新のモジュールが入ることになりサーバ間でモジュールのバージョンの差異が生まれる可能性があります。 そこで対応策として考えられるのが開発サーバで—installdepsを実行

  • XSSを回避しつつ、テンプレートからJavaScriptにJSONで値を渡す方法 - blog.nomadscafe.jp

    HTMLのscriptタグ内にデータを埋め込む際のエスケープ処理モジュール書いた」に引き続いて、XSSを避けつつ複数の値をJSONで渡す方法。 答えはmalaさんが書いてます テンプレートエンジンでJSONを生成する(多くの場合間違えるので、推奨しない) scriptタグの中でJSONを使わない 可能であればJSONライブラリのオプションで<>/いずれかをエスケープする。 生成されたJSON文字列の<>/いずれかを正規表現などを使って置換する。 JSONのvalueに当たる部分には「HTMLエスケープ済みの文字列を入れる」という規約を設けて事前にエスケープする。 の3番目以降。 ということで実装してみる。目標としてはXslateのfilterとして実装 [% hashref | json %] の様な形をとり、JSONのvalueにあたる部分はすべてHTML Escapeし、HTML中に

  • Contextの生成・破棄を任意のタイミングで制御可能にする Scope::Container(仮) - blog.nomadscafe.jp

    追記 CPANリリースしました http://search.cpan.org/dist/Scope-Container/ /追記 mod_perl のアプリケーションでは、Apacheモジュールの提供するpnotesを使うとリクエスト毎のデータを簡単に持つことができます。pnotesに入れたデータはリクエストの処理が終了したところで自動的にクリーンアップされます。これを利用したのがリクエストごとにインスタンスを作成破棄できる、Apache::Singleton(::Request)です。 また、pnotesはデータベースの接続の管理にもしばしば使われます。1リクエストを裁いている間だけデータベースとの接続を維持し、リクエストが完了したところで接続を閉じるような処理に利用されています。このようにすることでmod_perlのプロセス数分(数百)の接続がMySQLに常に張られることもなく、また1

  • CloudForecastの監視項目のカスタマイズ方法 - blog.nomadscafe.jp

    CloudForecastっていうリソース監視のツール/フレームワーク作ったにおいて、CloudForecastのインストールとCPUやメモリー、トラフィックなど基的な監視ができるところまで記事にしましたが、今回はその監視項目のカスタマイズの方法を紹介します。 前回記事の最後では、監視対象となるサーバはlocalhostだけが登録されている状態です。server_list.yamlは以下のようになっています。 --- #HOME servers: - config: basic.yaml hosts: - 127.0.0.1 server1 my great server configで指定しているが監視項目の設定ファイルです。cloudforecast.yamlのhost_config_dirで指定されたディレクトリ内に保存されています。監視項目のカスタマイズにあたり、新規にhost_

  • CloudForecastのリソース監視定義モジュールの作り方 - blog.nomadscafe.jp

    CloudForecastでリソース監視をする際の情報取得方法、グラフの設定を行うモジュールの作り方の紹介です。前のエントリーで紹介したgearman-starter.plのスコアボードによるステータス情報を取得してグラフにしてみます。 まず、gearman-starter.plのステータスを再確認します。telnetでみるとこんな感じです。 % telnet localhost 7005 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. System: gearman_servers: 127.0.0.1:7004 class: MyWorker Uptime: 20 BusyWorkers: 0 IdleWorkers: 10 -- pid Status Counter

  • プロのサーバ管理者が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つです。

    oinume
    oinume 2010/09/01
    Apacheじゃないけど、最近DBのコネクションプーリングで全く同じような設定をした。
  • 株式会社ミクシィを退職しました - blog.nomadscafe.jp

    昨日tweetした通り、株式会社ミクシィを退職しました。正確には今月末までとなり、今は少ない有給消化期間です。次の会社は既に決まっていて、6月1日から新しい会社となります ミクシィにはちょうど4年間在籍しました。その間mixiはPVにして10倍以上という驚異的な成長をし、会社としてのミクシィも上場をするなどさまざまな経験をさせて頂きました。 自分だけでやったことではなく、もちろん他のエンジニアの協力のもとで行ったことですが、4年間の間に自分のミクシィでやっていたことをBlog等ですでに紹介したものを中心にいくつか書くと アプリケーションレベルでのDBのフェイルオーバ Apache modproxybalancerの導入 デプロイツールの作成 サーバ設定のバージョン管理化 Squid COSSの検証導入 プロフィール画像などSquid CARPを利用した分散構成対応 Nginxの検証 Var

  • CloudForecastでmemcachedのコネクション数をモニタリング - blog.nomadscafe.jp

    先週のmixiの大規模な障害は、memcachedに対する接続が非常に多いところから発生したようなので、CloudForecastでその接続数をモニタリングできるようにしてみました。 (mixiではたぶんおそらくmemcachedは専用のサーバとなっているので、通常のTCP Established数がそのんままコネクション数になるはず) グラフは以下のように出力されます 赤いラインが起動時に指定した -c の値。 ところで、このmemcachedの起動オプションを取得する方法は今までないものだと思っていたのですが、memcached 1.4以降なら「stats settings」というコマンドで取得できるようです。 % telnet localhost 11211 Trying ::1... Connected to localhost. Escape character is '^]'.