目的 フロントがHTTPリクエストを受けて、バックエンドのアプリケーションサーバにreverse proxyするような構成において、指定秒数以内に何かしらのレスポンスを返したい。 200が返せない場合は、処理を打ち切って500を返したい。 背景 フロントでApacheやNginxをreverse proxyとして使っている場合、バックエンドが無応答になってしまうと、クライアントにレスポンスが返るのはデフォルトで数十〜数百秒後(ApacheのTimeoutのデフォルトは300秒、Nginxのproxy_read_timeoutのデフォルトは60秒)になってしまいます。 通常のWebサービスではこのオーダーのタイムアウトでもいいのかもしれませんが、数秒以内に(エラーでもいいので)レスポンスを返すことが求められる環境も存在します。(最近、特に多いのではないでしょうか:P) もちろんバックエンドが
HTTP の持続的接続の功罪について はじめに、HTTP の持続的接続 (keep-alive) のメリットについて。持続的接続を使うメリットは、以下の2点。 TCP 接続の確立にかかる時間の節約*1 TCP の接続と切断に必要な資源 (CPUとネットワーク) の節約 ウェブブラウザ〜データセンタ間の通信で、持続的接続を使う理由は、このうちの前者。特に太平洋を超えるようなケースだと、TCP 接続に0.2秒とかかかるので、メリットが大きい。 一方、持続的接続のデメリットは、 接続が切断されるまでの間、その接続を維持するためにコストがかかる (主としてメモリが無駄になる) という点になる。特に、1プロセス1コネクションを前提とするアーキテクチャ (例: mod_perl) だと、メモリの無駄使いが、とてもひどいことになる。 そこで、ブラウザからの接続を受ける HTTP サーバとアプリケーション
Apache Logを解析するためにMySQLに保存したいなーと思ったのでスクリプトを書いてみた。 DBIを利用するのが初めて、perlの理解もいまいちだったので苦労した・・ 携帯サイト用なので一応uidも考慮。docomoのuidはパラメータしか取得できないのでちょっと面倒。 テーブルはこんな感じ。とりあえずつくったので、けっこう適当です。 ====== CREATE TABLE `ap_log` ( `id` int(11) NOT NULL auto_increment, `lb` varchar(10) default NULL, `a_datetime` datetime default NULL, `remote_host` varchar(256) default NULL, `remote_user` varchar(256) default NULL, `x_docomo
もう二ヶ月ほど前の話なのですが、お仕事でサイトが異常に重い(遅い)んだけど・・・という苦情が月に1〜2件ほどきていたので、重い腰を上げて本格的に調査・解析して pound と apache のチューニングを実施しました。チューニング後はサイトが重いという苦情は皆無になりました。(≧∇≦)b 今回のチューニングのキモは pound と apache をバランスよくチューニングするということでした。完全に見落としていた点でもありました。とりあえず苦情がきてた時点までの構成を図にするとこんな感じでした。 何しろ Web サーバの Load Average も CPU 負荷も高くないのでサーバ側は悪くないという思い込みが原因特定を遅らせた一番の原因。この2つの数値はとっても重要なのですが、この数値に真実の見極めを惑わされてはいけません。 以下、調査手順など備忘録的なメモ。途中かなり寄り道したり脱線
.htaccess .secret.txt .svn 等のドットから始まるファイル、ディレクトリにアクセス禁止 #403 Forbidden RedirectMatch 403 /\. ちなみにディレクトリのみに限定したければ #403 Forbidden RedirectMatch 403 /\..*/ どこぞのサイトには以下のように Directoryディレクティブ でいけると書いてあったが、 私の環境では 500 Internal Server Error が発生して動作しなかった。。 <Directory ~ "/\..+/"> Order Deny,Allow Deny from All </Directory>
Apacheのバージョン2.2.12以降では、SNI(Server Name Indication)という、SSLプロトコルに対する拡張機能がサポートされているため、名前ベースのHTTPサイトを設定する場合と同じように名前ベースのHTTPSサイトを設定することが可能になっている。本記事では、Apacheのこの機能について紹介する。 Apache Webサーバがバージョンアップし、成熟していくに伴い、新機能の追加やバグの修正が行われてきている。そして、バージョン2.2.12で追加された機能のうち、最も重要なものはおそらく、単一IPアドレス上で複数のSSLサイトを運用できるようにするという、長らく持ち望まれていた機能だろう。 これまでは、特定のIPアドレスに対してSSL対応のWebサイトを割り当てた場合、そのサイト1つしかSSL対応のWebサイトを運用することができなかった。つまり、IPアドレ
リバースプロキシな環境では mod_rpaf 使ったりすることが多いと思いますが、バックエンドの apache でアクセス制限かける場合には、mod_extract_forwarded を使ったほうが良いよ、というお話。 バックエンドの apache 2.0 + mod_rpaf な環境で .htaccess によるアクセス制限をかけようとしても、接続元の IP アドレスではなく、pound の IP アドレスで制限がかかってしまう、という現象に悩まされました。で、ソースを眺めてみると mod_rpaf は ap_hook_post_read_request で実行されているのに対し、mod_access は ap_hook_access_checker で実行されています。おそらく、ap_hook_post_read_request よりも ap_hook_access_checker
Linuxで稼動させているApacheにて認証が必要なWebサービスに、Windowsドメイン(Active Directory)の認証情報を使って、シングルサインオンを実現させるまでの手順を備忘録として残しておきます。 今回、ブラウザは、IEとFirefoxにて動作確認を行いました。 Windowsドメインログオンをしているクライアントから、上記2種類のブラウザを使うと、NTLM認証※を利用しているWebサービスには、認証済みのドメインログオンの情報を利用することができ、ユーザ名やパスワードを入力する必要の無いシングルサインオン環境が実現できます。 ※NTLM認証(NT LAN Manager authentication)とは - IT用語辞典 e-Words 前提 今回利用した構成は以下のような感じ。 Webサーバ CentOS 5 Apache 2.2 + mod_auth_ntl
Ideas - O'Reilly Media modperlite PHPのようにファイルを置くだけで実行されてCGIより速くてmod_perlより簡単なapache moduleだそうです。去年からのCGI frameworkブームを補完する上でも試してみるっきゃないということで まずはソースの取得 svn co http://code.sixapart.com/svn/mod_perlite/trunk modperlite cd modperliteちなみにもうすぐgithubに移行されるようです。 コンパイルとインストールはapxsにパスを通して ./Build.PL ./Build ./Build installhttpd.confとかconf.d/modperlite.confとかに LoadModule perlite_module modules/mod_perlite.s
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
capistranoには、以下のコマンドを実行する事で、メンテナンスページを用意する機能があります。 コマンドを実行すると、デプロイ先のサーバ上で、shared/system/maintenance.html が生成されます。 shared以下のディレクトリは、public/の下にシンボリックリンクが作成されるので、 結果としてpublic/system/maintenance.htmlが準備される事になります。 しかし、capistranoがやってくれるのはここまでなので、 maintenance.htmlが存在した場合にそれを表示するようにするように、 Webサーバを設定する作業は自分でやる必要があります。 mod_railsとかでその辺まで面倒みてくれる感じになっていると楽なんですけどね。 その設定については、Apacheを使っている場合は以下のような感じにすればOKです。 1 R
mod_proxy_mapper のコードを詳説します。 mod_proxy に処理を移譲する方法 どこかのフェーズで request_rec *r; r->filename = "proxy:http://example.com/foo/bar"; r->proxyreq = PROXYREQ_REVERSE; r->handler = "proxy-server"; のように設定すると,handler フック(一般的なレスポンスハンドラ)において mod_proxy が呼び出されます。 なお proxyreq は通常のフォワードプロキシの場合 PROXYREQ_PROXY に設定します。また,まだリクエストがプロキシ化されていない場合,PROXYREQ_NONE になっています。 どのフェーズにフックをしかけるべきか mod_rewrite の場合, server context の場
ゆめみ、Apacheモジュール第二回公開『mod_image』・株式会社ゆめみ via ke-tai.org 株式会社ゆめみから、携帯端末に合わせて画像変換を行う Apache モジュールである「mod_ktai_image」がリリースされたとのこと。 うーん、すばらしい。 ただ、以前リリースされた mod_ktai はどの程度インストールされたんだろうと思って検索をかけてみたのですが、あまり情報は多くないですね。 仙人の心得 » 携帯サイト:mod_ktaiをインストール mod_ktaiインストール列伝 (MTなのです) オープンソース研究室: mod_ktaiを試してみました 配布方法(rpmのみ)がネックになっているのでしょうか。 ■関連エントリー ケータイサイト用Apacheモジュールの mod_ktai が無償利用可でリリース 携帯サイト構築メモ
複数のテストサーバをリバースプロキシで集約 (1) - daily dayflower と 複数のテストサーバをリバースプロキシで集約 (2) - daily dayflower の続きです。 mod_rewrite の RewriteMap を使ってごにょごにょしましたが,なんともまどろっこしかったです。そもそも URI の書き換えに癖のある DSL を使う mod_rewrite を使わなきゃいけないということ自体がアレです。もっと手になじんだプログラミング言語で書ければロジックもすっきりするのに! というわけでモジュールを書いてみました(mod_proxy_mapper.c - daily dayflower)。 プロキシ専用ですが,サブリクエストを使ってプロキシ先を選定するモジュールです。 サブリクエストを使っているので,Apache でサポートしている言語ハンドラ……CGI*1
今作っているサービスは、Apacheのmod_proxy_balancerを使ってロードバランシングしている。しかし、バックエンドのサービスサーバを一旦落としてから復帰させると、コネクションがしばらくつながらないという問題に悩んでいた。1分ぐらい放置するとつながるようになるんだけど、1分は結構長い。 よくわからないのでソースを読んでみたところ、mod_proxy_balancer.cを眺めた感じ、ap_proxy_retry_workerという関数がコネクションの再確立をしているのではないかと思えた。しかし、関数の定義を眺めてみると、現在時刻がエラー発生時刻とworker->retryを足した数字よりも大きければworkerのstatusからPROXY_WORKER_IN_ERRORのビットを下ろしているだけで、コネクションの確立がどうのこうのなんて関数はまったく呼ばれてない。ここでなにが
MAMP PRO for Windows MAMP PRO is the commercial, professional frontend for the classic local server environment: MAMP. With MAMP PRO you can create a separate host for each of your web projects. You can install WordPress and other Extras like Joomla or Drupal with just a few clicks. This is just a small part of what you can do with MAMP PRO. Buy MAMP PRO for Windows MAMP for Windows MAMP is a free
コア機能と MPM core常に使用可能な Apache HTTP サーバのコア機能 mpm_common二つ以上のマルチプロセッシングモジュール (MPM) で実装されているディレクティブのコレクション beosThis Multi-Processing Module is optimized for BeOS. eventAn experimental variant of the standard worker MPM mpm_netwareMulti-Processing Module implementing an exclusively threaded web server optimized for Novell NetWare mpmt_os2Hybrid multi-process, multi-threaded MPM for OS/2 preforkスレッドを使わず
構築環境:Red Hat Linux release 9 (Shrike), Apache2 Apacheモジュールとは † Apacheモジュールを使うと、Apacheに様々な機能を付加することができる、例えば、アクセス制限や、SSLといったものである。 ↑ 検証内容 † Redhatにデフォルトで組み込まれている、モジュールを削除することにより、1プロセスあたりのメモリ使用量がどのように変化するか検証する。 ↑ 削除対象 † デフォルトで設定されているモジュールのうち下記を削除する。 いる/いらないの判断は個人的な判断によるが、デフォルトで組み込まれている モジュールが全部必要になることはまれである。 /etc/httpd/httpd.conf LoadModule access_module modules/mod_access.so LoadModule auth_module
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く