タグ

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

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

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

  • Nagios と derived でMySQLのスロークエリの量を監視する - blog.nomadscafe.jp

    新しい機能をリリースした際に、MySQLに対して効率的ではないクエリが発行されてしまって、それが積もってサービス全体に影響が出てしまう前に発見してアラートをあげたい。 発見する手立てとしてはCPU使用率やInnoDBのROW OPERATIONSが考えられるところですが、今回はスロークエリが発生した回数を監視することにした。ちなみにいつものことながら対象とするMySQLは4.0系。long_query_timeがオンラインで変更できません。。。はい MySQLのスロークエリが発生した回数は、show status のSlow_queriesという項目でみることができて mysql> show status like 'Slow_queries'; +---------------+-------+ | Variable_name | Value | +---------------+---

  • File::RotateLogs っていうログをファイルに記録していくモジュールを書いた - blog.nomadscafe.jp

    「君のPSGIファイルを僕のミドルウェアでいっぱいにしたい」という台詞を思いついたけど使い道がない kazeburo です 似たようなログ記録モジュールはCPANにいくつかあるんだけど、File::RotateLogsっていうのを書いてCPANにあげました https://metacpan.org/release/File-RotateLogs 特徴は以下の通り strftimeベースのファイル名生成 秒数指定のrotation rotation時に最新のファイルへのsymlink 古いログはforkしてバックグラウンドで削除 使い方 Proclet と組み合わせると my $app = builder { enable 'AccessLog'; $app; }; my $rotatelogs = File::RotateLogs->new( logfile => '/path/to/ap

  • YAPC::Asia Tokyo 2011 で発表してきました。 - blog.nomadscafe.jp

    今年もYAPC::Asiaに参加してきました! 牧さん、941さんをはじめスタッフの皆様、スピーカーの皆様、そして参加者の方、お疲れさまでした。ありがとうー。 去年の発表はcloudforecastでしたが、今年は、「運用しやすいWebアプリケーションの構築方法」としてログ、DBI、memcached、matricsと4つほどトピックをあげて紹介しました。 YAPC::Asiaが始まるまえに id:tagomoris が「YAPC::ASIAで、あるいは他の勉強会で、しゃべりたいこと、聞きたいこと」というエントリーで、以下のようなことを書いていました。 ソフトウェア関連の勉強会に行ってしゃべらせてもらうとき、当然「自分は何をやったのか」を話しに行く。世の中にあるコレがこうなってるよというセッションももちろんあるけど、もちろんその話をする人はカタログを読み上げてるだけじゃなくて、その人が読み

  • 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を実行

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

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

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

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

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

  • Yokohama.pm#7 で喋って来たよ! - blog.nomadscafe.jp

    徒歩で帰れるのはYokohama.pmだけ! 2011/5/13 に開かれた「Yokohama.pm#7」で発表してきました。hirataraさんのまとめがいつもながらすばらしいです 自分の発表は、「Operation Oriented Web Applications」というなんかもっともらしいタイトルで最近作ってる Log::Minimal DBIx::Sunny GreenBuckets について話してきました。当は Scope::Container も追加しようと思ったのですが、どう考えても時間ないのでカットしてます。それでも時間オーバーすみません>< 資料はいつも通り slideshare 3つのモジュール/システムを紹介しながら、運用しやすい、運用からみて効率の良いアプリケーションとはというテーマをもってみました。ログ、SQL、効率的なスキーマ設計、ハードウェアの有効活用あた

  • HTTPコンテンツ圧縮とPlack - blog.nomadscafe.jp

    「HTTPコンテンツ圧縮はどのレイヤーで行うのがいいか」で書いたりしましたが、高トラフィック環境では、サーバ間の通信量も問題となるため、ApplicationサーバでもHTTP圧縮をかけたほう良さげです。Plackには既にPlack::Middleware::DeflaterというApacheのmod_deflate相当のMiddlewareがあるのですが、ちょいちょい弄っていたりするのでその紹介。 その前に、HTTPコンテンツ圧縮のおさらいです。HTTP圧縮はリクエストのAccept-Encodingにgzipやdeflateがあった場合に、コンテンツをgzip、deflateなどで圧縮し、レスポンスのContent-Encodingヘッダに圧縮に用いた方式を表記することで実現されます。さらに、クライアントサーバ間にキャッシュサーバが存在した場合に、Accept-Encodingを送って

  • Log::Minimal meets Plack. Log::Minimalを使って環境に適したログ出力を - blog.nomadscafe.jp

    「運用におけるエラーログの重要性もしくはLog::Minimalってモジュール書いた話」で書いたLog::Minimalを、Plackと組み合わせたときにさらに便利になるMiddlewareを書きました。 ここで入手可能になるはず http://search.cpan.org/dist/Plack-Middleware-Log-Minimal/ 試しにログを吐くだけのアプリケーションを作ってリクエストをすると こんな風に、ログに色をつけてくれるのと、REQUEST_URIも付加してくれます。ただし色が付くのは開発環境(plackup -E productionとかしない場合)です。 Log::MinimalとPlack::Middleware::Log::Minimalの最大の特徴として粗結合+グルーとなるミドルウェアという組み合わせが挙げられます。Log::Minimal自体は特に依存が

  • 運用におけるエラーログの重要性もしくはLog::Minimalってモジュール書いた話 - blog.nomadscafe.jp

    追記 CPANにアップしました http://search.cpan.org/dist/Log-Minimal/ /追記 アプリケーションサーバでエラーが起きていたり、レスポンスが遅かったりする場合に、Operation Engineer(インフラエンジニア)がまず見るのは、エラーログです。エラーログにでているメッセージを手がかりに原因を探ります。 サーバでエラーが起きている時には、データベースに接続ができなかったり、外部のAPIからレスポンスが得られない、またプログラムのBugが原因となっている場合もあるでしょう。またエラーにならなくても、複数台あるデータベースのスレーブサーバうち一台が落ちて接続をretryしていたり、APIのレスポンスが遅い際にはサーバ全体のパフォーマンスが低下します。 エラーログに障害の原因を探る情報があれば、Operation Engineerは素早く対応を開始で

  • There's more than one way to enjoy YAPC! / YAPC::Asia 2010感想 - blog.nomadscafe.jp

    自分の発表のことは前のエントリーに書いたので、全般的な感想を書いてみる。 今回のYAPC::Asiaで面白いなぁと思ったのは、運用系の発表が多くあったことだと思う。自分のCloudForecastの話の他にも、刺身さんの30days、myfinderさんのソーシャルアプリ向けの運用監視、盛り上がったnekokakさんの省サーバ運用などなどがありました。 インフラエンジニアはもっと前にでてもいいと言われるけど、既にhbstudyやqpstudyを通してインフラエンジニアが集まって喋る機会が生まれているし、そこから今回のYAPC::Asiaのような大きなイベントでも話すようになってきている。運用しているシステム・サービス、規模の大小に関わらずもっともっと多くの人が出て来て、刺激し合えると楽しいし、ノウハウを共有して仕事の質を高めて、楽ができるようになれば良いよね! ところで、今回のYAPC::

  • YAPC::Asia 2010 Tokyo で CloudForecast について喋ってきた - blog.nomadscafe.jp

    Yokohama.pm で話したこと+αで、監視についての話、CloudForecastの概要とインストール方法、拡張方法、また生成するグラフの見方、運用方法について紹介しました。 slideshare版の資料にはありませんが、発表で使った資料の最後はShibuya.pmの中継を見ていた息子です。去年の発表でも画像の縮小のサンプルにもつかってました^^ \n\n[Yokohama.pm](https://blog.nomadscafe.jp/2010/07/yokohamapm-6cloudforecast.html) で話したこと+αで、監視についての話、CloudForecastの概要とインストール方法、拡張方法、また生成するグラフの見方、運用方法について紹介しました。\n\nslideshare版の資料にはありませんが、発表で使った資料の最後はShibuya.pmの中継を見ていた息子

  • Shibuya.pm#14 で memcachedの運用について発表しました - blog.nomadscafe.jp

    2010夏のmemcachedシリーズもいよいよ最後となりました。 1歳8ヶ月のうちの息子も見ていた Shibuya Perl Mongersテクニカルトーク#14「IPAとJPAは違う団体です」でmemcachedの運用について発表をさせていただきました。今回は監視scriptの書き方やcronlog、Nagiosの設定tipsなどの内容にしました。memcachedの監視というよりかは一般的なノウハウ寄りだったかなと 監視の狭間問題の対策としてmemcachedのuptimeを見るscriptを紹介していますが、この問題はmemcachedには限りません。自動的に再起動してくるようなサービスで勝手に再起動した=何か問題が起きたと想定できる、例えばMySQLや /proc/sys/kernel/panic が設定されているLinuxにも同じような監視が必要になるでしょう。 MySQLであ

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

    pmakino
    pmakino 2010/09/04
    forkの負荷まで考えなきゃいけないような高負荷なWebサーバ運営したことない…
  • Yokohama.pm #6でcloudforecastについて喋って来た - blog.nomadscafe.jp

    Yokohama.pm#6 x Perl Casual#3でcloudforecastについて時間を頂いたので喋ってきました。 すてきな会場を貸して頂いたネイバージャパン株式会社さん、USTREAMを担当してくれた941さんありがとうございます。 発表資料はこちら。

  • CloudForecastっていうリソース監視のツール/フレームワーク作った - blog.nomadscafe.jp

    「クラウド」って言ってみたかった。今は反省していr 上のグラフは前回のエントリーを公開したときの、当blogを配信しているサーバのトラフィックグラフです。記事を公開した17時にぴょーんとトラフィックが伸びています。4時にも増えているけどこちらは謎。 実はこのグラフもCloudForecastを利用して取得しています。CloudForecastはサーバ等のリソース監視を行うツールもしくはフレームワークで、rrdtoolの薄いラッパーとして動作し、小規模から大規模なサーバ群を一括で管理できるように設計してあります。tokuhirom曰く、「perlが書けてrrdtoolがつかえるsysadminの人だったら使いやすいと思われる」というのがもっともしっくりくるような気がします。Perlとrrdtoolが使える運用者によるカスタマイズ前提なのがフレームワークと呼んでいる所以です。 CloudFor

  • アプリケーションがマルチスレッドでもマルチコアCPUを活かせない件 - blog.nomadscafe.jp

    もっと詳しい方のフォロー募集です アプリケーションがマルチスレッドになってもネットワーク処理が分散されなければマルチコアを活かせない典型的な例です。id:viverの古橋さんがs100kpsとしてあげていた件にも近いかも。 memcachedで現象を確認します。最近のmemcachedはマルチスレッドで動くようになっているので、まずはそれを確認します。 $ memcached-tool localhost stats|grep threads threads 4 スレッドが4つで起動しています。 負荷がそれなりにある状態(8000req/sec程度)で、コマンドラインでtopを開き、「1」キーを押して、CPUごとの使用率を表示します。(例はFedora8 kernel-2.6.23) Tasks: 77 total, 1 running, 76 sleeping, 0 stopped, 0

  • データベースサーバを複数台構成とか2010年代には流行らない - blog.nomadscafe.jp

    奥一穂さんの「ウェブアプリケーションサーバを複数台構成とか2010年代には流行らない」にフォローのような感じで。 例によってタイトルは煽りです。 奥一穂さんのエントリーでは、「5,000万PV/Month」という見積もりでアプリケーションサーバの台数を1台と計算していますが、これからは「1,000万PV/Day」を超えるサイトが多く生まれてくると予想しています。どんなサイトかというと、mixiアプリやモバゲーなどにソーシャルゲームを提供するサイトです。 ソーシャルゲームサイトのキャパシティプランニングについては中澤さんのエントリーが参考になります。 The Art of モバゲー Capacity Planning The Art of Mixi-mobile-appli Capacity Planning 最も人気がでた場合には数千万から数億PV/Dayという数字がならんでいます。怖い怖

    pmakino
    pmakino 2010/01/16
    この前の Shibuya.pm でも TC が分散処理できないことについて平林さんが「そもそも TC 使って1台のサーバで処理できないようなものはほとんど存在しない (もしあったら別のものを使えばいい)」みたいなこと言ってた