You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
まとめ 超長くなったのでまとめを上に持ってきた。 巷で言われているチューニングは結構嘘が多い事が解ってきた。 ツール等 workingSet Analyzer は信用ならない。(overSecondsはまあ良い) mongoperfの値は完全に参考にならない。 insert mongoperfの値はinsert性能と関連しない。(何を測ってるんだ?) カラムのプリアロケーションによるUPDATE時のデータ肥大化回避($setOnInsert)はMUST。 クリティカルな時間帯にストレージファイル(2GB)の生成を避けるチューニングの効果は懐疑的。 レコードプリアロケーション・チューニングは頑張る価値が無い。(むしろ逆効果) update 上記の通り必ずin-placeになるようにする。 paddingFactorが動くようだとお話にならない性能劣化 remove かなり高速。 全件削除の場
はい、これは僕がいつも良く見るApacheとNginxの性能差に見えます。大体、ApacheはNginxの75%程度の性能に落ち着きます。数十バイトの静的コンテンツに対するリクエスト処理はNginxの得意分野だと思っていたので、大体こんなものです。 そこで、真面目にevent_mpmのチューニングを行ってみました。で、幾度となくベンチを試した結果導き出した、静的コンテンツに対する同時接続数100程度に対して最高のパフォーマンスを示すevent_mpmの設定は以下のようになりました。 [program lang=’apache’ escaped=’true’] StartServers 4 MinSpareThreads 4 MaxSpareThreads 4 ThreadsPerChild 2 MaxRequestWorkers 2 MaxConnectionsPerChild 0 [/p
忘年会シーズンで肝臓への負担を極力避けている@masudaKです。今回はJavaアプリケーションの運用のポイントに関して、書いてみたいと思います。 このエントリはJava Advent Calendar 2012の22日目のエントリです。 Javaアプリケーションの運用ポイントとは 昨今ではLLのほうが敷居が低く、開発スピードも早いということからか、PHPやRubyなどのLLによるWebアプリケーションが多くリリースされているかと思います。 しかしながら、TwitterがJVMベースの開発にシフトしたように、より深いレベルで実装を行おうとした際にLL以外の実装も一つの選択肢として残っているのは間違いないでしょう。 そのようななかで自分が最もよく触れているJavaでのアプリケーションの運用ポイントについて述べてみたいと思います。 ここでいう「運用」とは、サービスをリリースしたのち、サービスへ
CentOS で Apacheモジュール のデバッグをしていて、 Core Dump を吐かせようと思ったときに少し迷ったのでここにメモしておく。 Core Dump はプログラムがクラッシュしたときのメモリの状態を示すものであり、gdb でいろいろ解析ができるのでデバッグ時に重宝するのだが、サイズが結構巨大になる。それに Production な環境では不要なものなので、ディストリビューションはあの手この手で Core Dump を出力しないようにしているのが普通だ。 ググるといろんなやり方が書いてあるけれども、ディストリビューションによって手順が違うのに加えて、一般論も混じっていてかなりわかりづらい。CentOS(Red Hat系ディストリビューション) で一番簡単なのは以下だ。 これは、/etc/init.d/functions で ulimit を環境変数で毎回設定していることによ
Apacheのアクセスログ(commonあるいはcombined形式)をLTSVに変換するツールをJavaで書いてみた。 使い方: mcp.jarをダウンロードし、 cat access_log | java -cp mcp.jar net.jumperz.app.MCP.MCP net.jumperz.io.multicore.example.MCombined2LTSV パースするコードそのものはこんな感じで普通。正規表現は使っていない。たぶんJava1.4以上でコンパイル可能。 こういう処理をさくっとマルチコア対応にするためのフレームワーク、MCPというのを作ったので、早速利用してみると、手元の4コアのマシンでは約140万行/秒(common形式のログ)という爆速で変換が終了する。dankogai氏が書かれているperlスクリプトより約20〜30倍速い(正規表現を使うかどうかという点
Apacheの設定ファイルを変更します。 80番はリバプロ側で処理するためApacheではListenポートを8010に変更する nginx側の設定を変更します。 インストール後は「/opt/local/etc/nginx」に設定ファイルのサンプルがあり、 通常はこちらを参考にして設定しますが、今回は設定ファイルを下記のように設定します。 1.mimeタイプはデフォルトのものを利用します sudo mv /opt/local/etc/nginx/mime.types.default /opt/local/etc/nginx/mime.types user nobody; worker_processes 1; error_log logs/error.log info; events { worker_connections 256; } http { include
monit のデッドロックを追っていた件から派生して、 pthread 全然知らんなーということで表紙がきもちわるいことで有名な(?) 『Pthreadsプログラミング』を読んでました。 Pthreadsプログラミング 作者: Bradford Nichols,Dick Buttlar,Jacqueline Proulx Farrel,榊正憲出版社/メーカー: オライリー・ジャパン発売日: 1998/05/01メディア: 大型本購入: 4人 クリック: 52回この商品を含むブログ (21件) を見る 「5.5.1 スレッドのからのforkの呼び出し」の章で、スレッドから fork する際の注意点が書かれています。その中で 代理親モデル surrogate parent model という用語が気になったのでピックアップ。 代理親モデル surrogate parent model 代理親モ
よく訓練されたアップル信者、都元です。Hadoop使ってますか。試しにHadoopを使ってみよう、と思った時に主に障害となるのが以下の3つです。 Hadoopのクラスタを組むために実機を複数用意するのが厄介。それをクラスタとして組み上げるのも厄介。 Hadoopの上で動かすアプリケーションをMapReduceで書くのが厄介。 Hadoopで処理するほどのビッグデータを用意するのが厄介。 1つ目はAmazon Elastic MapReduce (EMR)を使う事でスマートに解決しましょう。 2つ目については、オープンソースのMapReduceアプリケーションを使います。私が強い興味を持っている分野に「機械学習」というものがあります。機械学習とは、コンピュータにデータを分析させ、未知の情報についての予測をさせたり、人間の知能に近い機能を実現しようという試みです。今回は、この機械学習の各種アル
ひょんなことから 32bit カーネルで動いている Apache (MPMは worker = マルチスレッド) を /usr/bin/pmap で調べていました。調べている中で pthread のスタックの割当テ方にも興味がわいたので glibc なども深追いして調べました。 以降の内容は次の環境で調べた内容です。 CentOS release 5.9 , 32bit 2.6.18-348.2.1.el5 glibc-2.5-107 httpd-2.2.3-76.el5.centos pmap で [anon] が一杯でてくる worker プロセスの pmapを取ると一定サイズの [anon] が連続して出てくるのはなんだったかな ? と。 /usr/bin/pmap の出力 # 説明のために pmap の出力を一部省略 b23de000 4K ----- [ anon ] b23df
仕事でApache+Ruby+PostgreSQLのパフォーマンスチューニングに携わったので、チューニング項目について備忘録でまとめておきます。 ここに挙げている以外の項目も色々あると思いますので参考程度でお願いします。また不足している項目があればどこかでつぶやいてください。 1.Apacheのチューニング項目 Apacheのチューニングは、httpd.conf(/etc/httpd/conf/httpd.conf)に下記の項目を設定します。 MPM(Multi-Processing Module)はworkerを利用しています。 ThreadsPerChild ThreadsPerChildは、1プロセスで生成可能なスレッド数を設定します。例えば ThreadsPerChild 30 と設定すれば1プロセスで30スレッドまで生成されます。 MaxClients MaxClientsは最大
追記(2/8 11:30) id:naoyaによる一連のまとめが【今北産業】3分で分かるLTSV業界のまとめ【LTSV】 - naoyaのはてなダイアリーにあります。 また、仕様などをまとめるために http://ltsv.org/ を立ち上げました。 追記ここまで Labeled Tab Separated Values (LTSV) というのは、はてなで使っているログフォーマットのことで、広く使われているTSV(Tab Separated Value)フォーマットにラベルを付けて扱い易くしたものです。はてなでは、もう3年以上、このフォーマットでログを残していて、one-linerからfluentd、Apache Hiveまで幅広く便利に使えています。 ログフォーマットに期待されることは、 フォーマットが統一されている → 共通のツールで集計し易い 新しいフィールドの追加が容易 → サー
引き続き LTSV について。Text::LTSV はやってることは単にタブの split でしょうもないのだけど、せっかく作ったんだし何か利用方法はないかなと考えた。 LTSV のログは欠点があってそのままでは見づらいこと。 Text::LTSV でハッシュになるのだから、YAML とかで出力したらどうなるか試してみよう。さらに、YAML に色づけする YAML::Tiny::Color というのがあったぞ。 #!/usr/bin/env perl use strict; use warnings; use Project::Libs; use YAML::Tiny::Color qw/Dump/; use Text::LTSV; while (<>) { my $hash = Text::LTSV->parse_line($_); print Dump $hash; } こんなスクリプ
ここ数年のデータ解析の重要性の高まりから、ログに関するソリューションが方々で活発に探求されている昨今でございます。ウェブサーバーの単純なアクセスログをそのまま保存するではなく追加情報を添加してみたり、あるいはアプリケーションから直接ログを吐いてそれらをデータウェアに投げ込んで・・・というのも当然のように行うようになりましたね。 しかしあまり自由度のない access_log の combined フォーマット。さてどうしたもんか・・・ ここで id:stanaka の登場です。 Labeled Tab Separated Valueというのは、はてなで使っているログフォーマットのことで、広く使われているTSV(Tab Separated Value)フォーマットにラベルを付けて扱い易くしたものです。はてなでは、もう3年以上、このフォーマットでログを残していて、one-linerからflue
サーバを運用していらっしゃる方であれば、サービスの停止は死に値します。 大事な事なのでもう一度言います。 サーバを運用していらっしゃる方であれば、サービスの停止は死に値します。 サーバ管理者は皆、突然の死に備えるべきです。 そんな過酷な場面に立ち向かうサーバ管理者の皆さんの苦労を少しでも軽減する為に、apache モジュールを書きました。 mattn/mod_suddendeath - GitHub 突然の死! https://github.com/mattn/mod_suddendeath まずコンパイルしてインストールします。 apxs -ci mod_suddendeath.c -lhttpd -lapr-1 そして apache を再起動します。 サービスが動作しているディレクトリの .htaccess に以下を書き込みます。 SetHandler suddendeath すると
開発メモその3です。今回は Perl のおはなし。 何年も前に作ったウェブアプリケーションのコードを開いてみたら黒歴史なコードが出てきて憂鬱な気分になる、そんな経験ありませんか。私はあります。ずっとそんな現実から目を背けて生きてきました。 さて、先日 Perl + CGI で書いて Apache::Registry で高速化している、実行環境が Apache に癒着した CGIアプリケーションを発見しました。おえ〜っ。一から作り直したい気持ちをぐっと堪えて、これを Plack 化したりとリフォームしていくとしましょう。その過程を以下記します。劇的ビフォア・アフター! ・・・とかは期待せず、地道な変更を積み重ねていくのがコツです。 方針 いきなりコードをがりがり書き換えていくというよりは、試行錯誤のしやすい環境に移行させていきながらリフォームを進めます。遠回りですが、結果的にその後の運用が楽
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
alike での類似画像検索の主要な部分は上記の既存OSSを利用しているため、alike 自身は非常にコンパクトな構造になっています。下図にalikeのアーキテクチャを示します。 Apache alikeのデモ 下記のリンクをクリックすると、類似画像検索を体験できます。リンクをクリックして表示された画面の一番上の画像が「検索元」の画像で、2番目以降の画像が検索元と似ていると判断された類似画像一覧です。Luceneにより「似ている順」に表示されています。 http://rondhuit-demo.com/p/alike/ukbench/full/ukbench01700.jpg http://rondhuit-demo.com/p/alike/ukbench/full/ukbench01990.jpg http://rondhuit-demo.com/p/alike/ukbench/full
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く