![ウェブサーバーの市場シェアで「Apache」が首位陥落、代わって「Nginx」がトップも安泰でない理由とは【やじうまWatch】](https://cdn-ak-scissors.b.st-hatena.com/image/square/64e6af2db8a1af8e457c62764e6fe63d36641871/height=288;version=1;width=512/https%3A%2F%2Finternet.watch.impress.co.jp%2Fimg%2Fiw%2Flist%2F1325%2F133%2Fyajiuma-watch_3.png)
渡辺です。 Ansibleを使っている皆様、テスト書いてますか? え、書いてない? 弊社では、社内共有しているAnsibleのRoleの検証にServerspecを利用しています。 今日はよく使うリソースタイプを紹介します。 テストの流れ テストのフレームワークとしてはTest Kitchenを利用しています(kitchen-ansiblepushを利用したAnsible roleのテスト環境構築)。 はじめに、Test KitchenのEC2 Driverを利用し、AWS環境にEC2インスタンスを作成します。 次に、ひとつのRoleを実行するAnsibleのPlaybookを流します。 続けて、サーバの状態が期待された状態になっているかをServerspecで検証します。 最後に、AWS環境にEC2インスタンスが破棄されます(検証失敗時は破棄されない)。 Ansibleでもテストの仕組み
もはやHTTP/2リファレンス実装であるHTTP/2のCライブラリnghttp2の作者であるtatsuhiro_tさんが素晴らしいベンチマーク結果を公開されました。 その中で以下のように、あまりにもH2Oやnghttpdと比べてtrusterdのTLS利用時の性能が遅かったため改善しました。 server 6 bytes 4K bytes h2o 227865 78333 nghttpd 226716 80673 trusterd 62362 44020 ref: https://gist.github.com/tatsuhiro-t/5f3b170414582ac58091#tls-with-flow-control 主に原因としては以下が考えられます。 TLS record sizeが小さすぎる それに伴いTCP_NODELAYオプションとも相まってパケットサイズも小さすぎる パケット
処理能力の高さなどを理由に、近年、大規模サイトを中心に急速にシェアを拡大しているWebサーバー「Nginx」。この連載では、その特徴と魅力を分かりやすく紹介します。 第3のWebサーバーとして注目を集めるNginx 1日に数億リクエストを処理するような大規模サイトを中心に、近年急速にシェアを拡大しているWebサーバーが「Nginx(エンジンエックス)」です。HTMLドキュメントや画像ファイルといった静的コンテンツを高速で配信し、消費メモリが少なく、リバースProxyやロードバランサーといった機能も有した注目の軽量Webサーバーです。ネットクラフト社の調査によると、2014年6月時点でApache HTTP、Microsoft IISに次ぐ第3位のシェアを獲得しています。 依然としてApache HTTPやMicrosoft IISのシェアは高いものの、Nginxの認知度は日に日に高くなって
どうしても高速なWeb サーバが書きたくなったので joyent の libuv と http-parser (nodejs が内部で使っているライブラリ)を使ってWeb サーバを書いてみた。 mattn/http-server - GitHub https://github.com/mattn/http-server I/O は全て非同期で行いブロッキングしない作りとしました。これで絶対速くなるとは言わないけど、少なくともスケールはするんじゃないかと思います。 Date ヘッダとか、65536 バイト以上の POST ペイロードとか色々省いてるのでツッコミビリディ高いですが、ひとまず GET でファイルのサーブが出来る状態にはしたのでベンチマークを取ってみました。 # nginx $ ab -k -c 10 -n 10000 http://127.0.0.1/ # http-server
@hirose31さんと、Apache HTTPDからHTTPSでファイルダウンロード中にサーバプロセスがSIGBUSで死ぬって件にぶちあたり、 「OpenSSLの中でmemcpyがSIGBUSしてます」「な、なんだってー!」 って調べたのですが、理由は以下のとおりだった。 HTTPSの場合、デフォルト設定だとファイル読込にmmap(2)が使われる mmapされたファイルのサイズが変更されてもApacheはそれを検知しようがない そして、ファイル末尾以降のデータを読もうとするとセグメンテーションエラー(SIGBUS)が発生し、Apacheのサーバプロセスは異常終了する HTTPの場合は、ローカルファイルシステムの場合sendfile(2)が使われるので、ファイルサイズが変更になってもApacheは異常終了しない ただし、mod_deflateのような出力フィルタを使っている場合は、HTTP
はじめに こんにちは植木和樹です。本日は社内フォワードプロキシサーバー構築手順の備忘録になります。 お客様と案件のやりとりをする際にクラスメソッドではredmineやBacklogなどチケット管理システムを使うことが多いです。redmineを使う際には弊社グローバルIPからしか繋がらないようIP制限をかけています。redmine以外にも開発中・検証中のサーバー環境にはIP制限をかけてクローリングや第三者からの閲覧を防ぐことも多いです。 社内LANからこのredmineにコメントを書き込む際には問題ないのですが、出先や在宅勤務中はコメントが書き込めず困ってしまいます。そのためクラスメソッドにはVPN環境が用意され、社内LANに接続して作業ができるようになっています。 しかしVPN経由でIP制限のかかったサイトに繋ぐには下記のような手順をふむ必要があります。 Macbookに入っているVMwa
InfluxDBとは http://influxdb.org メトリクスやイベントといった時系列データを格納するのに適したデータストアです。 ちなみに go で書かれています。 ちなみに 2013のOpen Source Rookiesに選ばれました。 InfluxDBの特徴 RRDやMySQLに時系列データを格納する場合と比較して、InfluxDBの特徴を紹介します。 バックエンドは LevelDB LevelDBとは、キーでソートされた状態で可能されたKVSです(Google製)。詳しくはこのへん参照のこと。 http://en.wikipedia.org/wiki/LevelDB https://code.google.com/p/leveldb/ https://speakerdeck.com/smly/influxdb-and-leveldb-inside-out 将来的にLev
ちわっす!インフラ担当の池田(@mikeda)です。 今日はサーバ監視周りの話です。 まずNaviPlusでは、サーバ監視にNagiosとMuninを使っています。 普通ですね! 気をつけていることは、ちゃんとサービスも監視する(正常なHTTP応答、応答速度など)ということでしょうか。 まぁこのへんは今日の本題ではないので別の機会に話します。 システム運用してると、こんな情報も見たいなーというのが出てきます。 例えば、今回紹介するのはこんなのです。 障害発生時(例えば昨日のXX時XX分)の全サーバのプロセスリスト 全サーバのリソース使用状況のザックリとしたレポート あのDBでXX時ごろに流れてたクエリはどんなのか 去年のセール時のアクセス数やサーバ負荷の状況が見たい 本番サーバでtmuxを起動しっぱなしの人がいないか こういう既存ツール(うちだとNagios/Munin)にマッチしないもの
全国1000万人のVagrant利用者のみなさんこんにちは。 Vagrantいいですよね!そしてインフラの状態をテストするserverspecもいいですよね!この2つがシームレスに統合されるとかなりうれしいですよね! ということで本日12/2にvagrant-serverspecというプラグインがリリースされたので早速紹介します。 インストールインストールは簡単です。いつも通りvagrant plugin install vagrant-serverspec としてください。 コード自体は https://github.com/jvoorhis/vagrant-serverspec で公開されています。まだバージョン0.0.1なので、問題を見つけたらPR送るなりIssueを切るなりすると良いと思います。 使い方使い方も簡単です。まずVagrantfileを見てみましょう。 これは何をやって
仮想サーバからみる config.vm.synced_folder のディレクトリは OS のキャッシュがイヤな感じで効いてしまうようです。たとえば CSS ファイルや JavaScript ファイルをローカルから更新したときに、うまくファイル更新を拾えなくてファイルの末尾にゴミが付いてきちゃったりします。 この OS のキャッシュについては Apache HTTP Server ドキュメントの EnableSendfile ディレクティブ 項目にも書かれていて、 ネットワークマウントされた DocumentRoot (例えば NFS や SMB) では、カーネルは自身のキャッシュを使ってネットワークからのファイルを 送ることができないことがあります。 のように書かれていて、それの解決方法は、 これらの問題に当てはまるサーバの設定の場合は、以下のようにして この機能を使用不可にしてください
シンボリックリンク攻撃を防ぐための Apache HTTPD モジュールの解説はこちら: Apache HTTPD: mod_allowfileowner https://fumiyas.github.io/apache/mod-allowfileowner.html 背景 ロリポップの共有 Web サービス下のサイト改ざん事件で、 攻撃手法の一つとして 「他ユーザー所有のファイルへのシンボリックリンクを自分のコンテンツディレクトリ下に作り、Apache HTTPD 経由でアクセスする」手順が利用されたらしい。 参考: http://blog.tokumaru.org/2013/09/symlink-attack.html 当社サービス「ロリポップ!レンタルサーバー」ユーザーサイトへの第三者による大規模攻撃について http://lolipop.jp/info/news/4149/#090
POST /post HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded Content-Length: 7 foo=bar 1行目は request-line で、 method URI HTTP-version の形をしています。URIはホストを含めた絶対URIの場合と、ホストを含めない絶対パスの場合がありますが、絶対パスの方が一般的です。 2行目から空行までが request-header です。各行は field-name: field-value の形をしています。 field-name は大文字小文字を区別しません。 request-line から request-header とそれに続く空行まで、改行は CR LF になってます。Windowsでよく見る改行コードですね。 meth
最近、デーモンプロセスの管理にUpstartを使ってる。 PIDの管理をあんまり気にしなくてよかったり、イベント発火の仕組みでプロセス間の依存を解決できるのが楽。 簡単な使い方をメモしておく。 基本的な使い方 /etc/init/ に設定ファイルを設置する initctlコマンドで操作する これだけ。 操作用のコマンド プロセスの開始/終了/再起動/リロードは、start/stop/restart/reloadコマンドを使う。 $ sudo start myapp $ sudo stop myapp $ sudo restart myapp $ sudo reload myappこれらは、initctlコマンドへのシンボリックリンクで、例えばstartなら、 $ sudo initctl start myappと同等になる。 restartは終了して開始、reloadはkill -HUPシ
今更ながら、nginxにmapという機能があることを知った。 → HttpMapModule ということで、以下のことを試してみた。serverブロックの外側に以下のような記述を追加してみる(中に書くと怒られる)。 map $http_user_agent $myindex { default /index.html; ~(iPhone|Android) /index_sp.html; } んで、serverブロックの中のlocationの指定で location / { root /path/to/document/root; index $myindex; } って感じでindexの値をmapで指定した値に変えておくと、UserAgentに「iPhone」とか「Android」って入ってればindex_sp.htmlをインデックスファイルに、そうでなければindex.htmlをインデッ
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 これまでのApache2.2系以前でのアクセス制御の書き方は賛否両論でした。僕はあまり好きじゃありませんでした。 過去のアクセス制御に関しては、以下の記事がとてもわかりやすくまとめられていると思います。 こせきの技術日記 – Apacheのアクセス制御をちゃんと理解する。 ここで、以下のように言及されています。 こんなバッドノウハウ、本当はどうでもいいと思う。Apache 3.0では、かっこいいDSL(VCL)で書けるようにする構想があるらしいのでがんばってほしい。 ということで、2.4系ではDSLとはいかないまでも、Require*というディレクティブを使ったモダンな書き方ができるようになったので、それを2.2系以前のアクセス制御の記述と比
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く