タグ

ブックマーク / crumbjp.hateblo.jp (26)

  • アパッチのソケットサーバ実装 - 中年engineerの独り言 - crumbjp

    少しずつアパッチの中の話をしていきます。 今回はネットワークサーバの基となるソケット実装の話です。 アパッチのソケットサーバ実装は結構有名な方法だと思っていたのですが 人との会話中に、意外と知られていないのかもしれないと感じる事もあったので 書いてみようと思った次第です。 入門書などで出てくる一般的なソケットサーバの実装方法 // ソケット作成 listen_sock = socket(...); // アドレス:ポートを紐付け bind(listen_sock,...); // クライアント受付開始 listen(listen_sock,...); // クライアント受付ループ for (;;){ // クライアントの接続まで待機 client_sock = accept(listen_sock,...); // 子プロセス作成 if ( fork() == 0 ) { // 子プロセ

    アパッチのソケットサーバ実装 - 中年engineerの独り言 - crumbjp
  • サービスに使えるapache/opensslの構築方法 - 中年engineerの独り言 - crumbjp

    今回は私自身が最近行った環境構築の手順を紹介します。 手順は以下の通りです。 openssl ビルド/インストール apache2 ビルド/インストール apache2 設定変更 (opensslのパス) opensslの.md5がmd5sumコマンドの形式では無いので面倒です・・・ openssl $ cd /tmp $ wget http://openssl.org/source/openssl-0.9.8i.tar.gz $ wget http://www.openssl.org/source/openssl-0.9.8i.tar.gz.md5 $ md5sum openssl-0.9.8i.tar.gz | awk '{print $1}' | diff openssl-0.9.8i.tar.gz.md5 - $ tar xzvf openssl-0.9.8i.tar.gz $ c

    サービスに使えるapache/opensslの構築方法 - 中年engineerの独り言 - crumbjp
  • Linux/Apache事始め-ビルド編- - 中年engineerの独り言 - crumbjp

    まずは開発環境を構築しなければなりません。 方法は2通りあります。 パッケージ管理ソフトでインストール アパッチをビルド 1.では芸が無い環境によってアパッチのバージョンや構成が まちまちになってしまうので私的には2.を推奨します。 また(開発ではなくて)番サービスで使うアパッチも自前でビルドした方が良いでしょう。*1 アパッチビルド手順 $ cd /tmp $ wget http://ftp.kddilabs.jp/infosystems/apache/httpd/httpd-2.0.63.tar.gz $ tar xzvf ./httpd-2.0.63.tar.gz $ cd ./httpd-2.0.63 $ ./configure \ --prefix=/usr/local/apache2 \ --with-mpm=worker \ --enable-modules=most \

    Linux/Apache事始め-ビルド編- - 中年engineerの独り言 - crumbjp
  • /proc/[pid]/stat まとめ - 中年engineerの独り言 - crumbjp

    いつも忘れるので、まとめておくことにした stat No フィールド scanf 説明 0 pid %d プロセス ID。 1 comm %s 括弧でくくられた実行形式のファイル名。実行形式がスワップアウトされているかどうかによらず、見ることができる。 2 state %c "RSDZTW" のどれか 1 文字。 R は実行中 (running)、 S は割り込み可能な休眠状態 (sleeping in an interruptible wait)、 D は割り込み不可能なディスクスリープの待機状態 (waiting in uninterruptible disk sleep)、 Z はゾンビ状態 (zombie)、 T はトレースされている (traced) か (シグナルにより) 停止している状態 (stopped)、 W はページング中 (paging) を表している。 3 ppid

    /proc/[pid]/stat まとめ - 中年engineerの独り言 - crumbjp
  • MongoDB 2.4 の性能 徹底評価(レコード長による評価) - 中年engineerの独り言 - crumbjp

    前回のMongoDB 2.4 の性能 徹底評価の反響が大きかったので続編。 今回の調査対象 ドキュメントサイズ毎の性能を評価する。 今回の検証用にベンチを書いた。 性能見積りにも使えると思うので、紹介しておきます。 MongoDB-JP/mongo_bench 今回の検証も、Sakura VPS 2G で行った。 専用環境ではないので、ある程度まわりの影響を受けている。(何度もベンチを取って極力排除はしたが、、) また、記事に載せた以外にも色々と検証しており、その結果も少し混ざっていたり。。 オンメモリデータの処理が高速な事は解っているので 今回の検証の肝は『ディスクアクセス』 MongoDBはメモリ以上のデータを扱う為のプロダクトなのでなるべく性能が出ない様な条件=ワーストケースを狙った。 2GBメモリに対して40GBのデータを扱い、データ全体を万遍なく使うようなクエリーを発行する。 評

    MongoDB 2.4 の性能 徹底評価(レコード長による評価) - 中年engineerの独り言 - crumbjp
  • MongoDB 2.4 の性能 徹底評価 - 中年engineerの独り言 - crumbjp

    まとめ 超長くなったのでまとめを上に持ってきた。 巷で言われているチューニングは結構嘘が多い事が解ってきた。 ツール等 workingSet Analyzer は信用ならない。(overSecondsはまあ良い) mongoperfの値は完全に参考にならない。 insert mongoperfの値はinsert性能と関連しない。(何を測ってるんだ?) カラムのプリアロケーションによるUPDATE時のデータ肥大化回避($setOnInsert)はMUST。 クリティカルな時間帯にストレージファイル(2GB)の生成を避けるチューニングの効果は懐疑的。 レコードプリアロケーション・チューニングは頑張る価値が無い。(むしろ逆効果) update 上記の通り必ずin-placeになるようにする。 paddingFactorが動くようだとお話にならない性能劣化 remove かなり高速。 全件削除の場

    MongoDB 2.4 の性能 徹底評価 - 中年engineerの独り言 - crumbjp