タグ

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

  • 一時ファイルとdentry cacheとメモリ - blog.nomadscafe.jp

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

    udzura
    udzura 2019/10/07
    これってでかい画像をApacheで配る→dentry cacheが太る→tmpfsに一時ファイルを作れば抑制できる という理解でいいのかな。
  • Docker と SO_REUSEPORT を組み合わせてみる。おそらくその1 - blog.nomadscafe.jp

    SO_REUSEPORTはLinux Kernel 3.9からサポートされている機能で、複数のプロセス/Listenerから同じTCPポートをbind可能にして、Kernelが それぞれのプロセスに接続を分散してくれるという機能です。preforkなサーバはlistenしてからworkerをforkし、それぞれでacceptを行うという手順を踏みますが、SO_REUSEPORTを使えばその手順を踏まなくても複数プロセスから同じポートをListenして処理の並列性をあげたり、hot-depolyが実現できます。 Docker のHost networking機能とSO_REUSEPORTを使って、複数のコンテナから同じポートをbindできれば、コンテナのhot-deployができるんじゃないかと思ったので、試してみました。 SO_REUSEPORTについては以下のblogが参考になります。

  • 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でさらに上のパフォーマンスを出そうとしたのは、技術的なチャレンジの他に以下のようなアプリケーションで高速なアプリケーションサーバが必要とされると考えているからです。 ソーシャルゲーム、広告サーバ、

    udzura
    udzura 2014/12/19
    すごい
  • Plackを使ってApacheナシでNagiosをインストールする方法 - blog.nomadscafe.jp

    Plack上でPHP(php-cgi)を動かすモジュール、Plack::App::PHPCGIと任意のCGIも動かせるPlack::App::CGIBinを使ってApacheナシでNagiosをインストールする方法 まず、php-cgiをインストールする。CentOSの場合、php(53)?-cliというパッケージがあるのでそれを使います $ sudo yum install php53-cli #centos5。centos6だとphp-cli 次にnagiosを動かすユーザを作成します $ sudo /usr/sbin/adduser nagios nagios体とpluginをダウンロードしていれます。その際にApacheの設定はインストールしません $ wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagio

  • HRForecast - もうひとつのデータビジュアライズツール - blog.nomadscafe.jp

    ずいぶん前から作って動かしてはいるのですが、GrowthForecastの他にもうひとつのグラフ作成ツールを公開しています。 https://github.com/kazeburo/HRForecast デイリーで更新される数値のビジュアライズに使う事が出来ます。GrowthForecastにはない過去データの登録もできます。 モリスさんのスライドでも少し登場しています。弊社では主にHiveでの集計の書き出し先として使っています http://www.slideshare.net/tagomoris/log-analysis-with-hadoop-in-livedoor-2013 画面はこんな感じ 他のページにembedするHTMLの発行やCSVでダウンロードをサポートしています データの登録APIについて データの登録は、GrowthForecastと同じようにURIに対してPOSTリ

    udzura
    udzura 2013/02/07
    “HRForecastの最小の更新単位は1時間”
  • cron等をつかって外部のAPIに問い合わせる場合は、毎時0分を避けるのが大人のマナー - blog.nomadscafe.jp

    なんかtwitterで書いたらウケたっぽいので cronをつかって外部のAPIに問い合わせる場合は、毎時0分をさけるのオススメ!!!!お兄さんとの約束だ!!! — masahiro nagano (@kazeburo) August 9, 2012 某サービスのAPIへの問い合わせ件数を調べると、毎時 0分台(0秒から59秒)のアクセスは1分から59分までの1分間の平均アクセス数の5倍から8倍にもなります。 これはおそらく、crontabの設定が 0 * * * * /path/to/call_foreign_api になっていることが多いからじゃないかなぁと思うのです。 その結果、サーバのロードアベレージは このように毎時0分だけ跳ね上がってしまいます。サービスを快適に提供できなくなる可能性があるので、APIの利用を制限したり、サーバを追加しなければなりません。これはサービス利用者、サー

    udzura
    udzura 2012/08/10
    おとなティップス
  • Plack::Middleware::AccessLog でありがちな罠 - blog.nomadscafe.jp

    Plack::Middleware::AccessLog は Apacheライクなログが残せる便利ミドルウェアなんですが使う上で一つ注意点があります。 use Plack::Builder; builder { enable "AccessLog", format => "combined"; sub { die }; }; これで、500エラーのログが残ることを期待するかもしれませんが、実際は記録されません。 例外がMiddleware層を飛ばしてServerまで伝わる為で、何らかの形で例外を補足してあげる必要があります。 例えば、Plack::Middleware::HTTPExceptions builder { enable "AccessLog", format => "combined"; enable "HTTPExceptions"; sub { die }; }; もしく

    udzura
    udzura 2012/01/06
    この玉ねぎは Rack でも一緒
  • memcached-1.4.7-rc1でmixiの大規模障害の原因となったmemcachedの不具合が全て解消されました - blog.nomadscafe.jp

    こちらとこちらのエントリーの続き memcached 1.4.6でmixiの障害の原因となったaccept_new_connsがスレッドセーフじゃない件は修正されているはずだったのですが、検証したところ別のスレッド競合による不具合が発生し、Bugは全て解消されてはいませんでした。 この件についてmixiたんぽぽGの森さんと調査していたところ、memcachedのcommiterにtwitter上で補足され、つたない英語で報告をあげていたら1.4.7-rc1で修正されたのでその報告。 memcached 1.4.6での不具合再現方法 まず、1.4.6で不具合を再現させる方法について。mixiのエンジニアブログと同じように、memcachedは次のオプションで起動し、 $ ./memcached -U 0 -u nobody -p 11222 -t 4 -m 16000 -C -c 1000

  • 1