これは何 以下記事のアンサーブログです。 qiita.com 以下のことはコメントに書いたんですが、書ききれなかった部分もあったり整理したほうがいいなと思い記事に起こしています。 現代のアプリケーションではC10K問題よりも先にDBやアプリケーションのボトルネックが先に来るため、C10K問題に遭遇するよりも先にやることがある ミドルウェアとしての成り立ちから設定ファイルの書き方に至るまで、それぞれのソフトウェアで思想が根本的に異なるので、単なるパフォーマンス比較をしてもあまり意味がないNginxとApacheの違いをC10K問題を中心に語るのは時代が違う この記事に限らず、多くの「Nginx vs Apache」系記事では「ApacheはC10K問題を抱えている」という論理をベースにそれぞれの違いを表現しています。 が、これは2022年においては(実際にはもっと前からですが)既に事実では
WebサーバーやWebサービスの公開前には、そのサーバーがどの程度のアクセスにまで耐えられるかを事前に調査しておくことが好ましい。本記事では、こういった調査の際によく使われる「Apache Bench」および「Siege」というツールの使い方を紹介する。 サービスの公開前に行っておくべき負荷テスト 昨今では低価格サーバーでも高性能化が進んでおり、静的なページを表示するだけのWebサーバーや比較的負荷の少ない処理を行うようなWebアプリケーションでは、1台のサーバーのみでそれなりの規模のアクセスに耐えられるようになっている。とはいえ、CPUの性能やメモリ容量、ストレージの種類などによってアプリケーションのピーク性能は変動するため、単純にハードウェアの性能や使用するソフトウェアといった情報だけでどの程度までのアクセスを捌けるのかを判断することは難しい。実際、負荷をかけてみたら「想定していたレベ

Apache Software Foundation(ASF)は1月10日(米国時間)、分散処理ツール「Apache Beam」がトップレベルプロジェクト(TLP)となったことを発表した。 Apache Beamは、バッチとストリーミング処理の両方を任意の実行エンジンで動かすことができるユニファイドプログラミングモデルを提供するソフトウェア。Apache SparkやApex、Apache Flink、Google CloudDataflowなどの実行環境を利用でき、PythonとJavaでデータ処理パイプラインを定義できるSDKを含む。拡張性にも優れるとしている。 当初はGoogleでMapReduceシステムの流れを汲むデータ処理の取り組みの一部として開発されたもので、2016年1月にApache Software Foundation(ASF)に寄贈された。GoogleはApac

Apacheのaccess_logはすぐ大きくなりますよね。 ログファイルのサイズが大きくなれば、ログ解析のときにも困るし、運用に支障が出ます。 というわけで、今回はApacheのaccess_logのログローテートテクニックについて、具体例を交えながら解説してみようと思います。 ローテートの方法として以下3つの手法を考えてみます。cronとシェルスクリプトの合わせ技で頑張る Apacheのに搭載されている機能を使うlogrotate.dに頼る 具体的な手順・解説は以下のとおり。 その1:cronとシェルスクリプトの合わせ技 以下のようなスクリプトを作成し、cronに仕込んでみます。 #!/bin/sh HIDUKE='date +%y%m%d' cd /usr/local/apache2/logs mv access_log access_log.$HIDUKE ../bin/apa
cat << _EOF_ > /etc/httpd/conf.d/security.conf # バージョン情報の隠蔽 ServerTokens ProductOnly Header always unset "X-Powered-By" # httpoxy 対策 RequestHeader unset Proxy # クリックジャッキング対策 Header always set X-Frame-Options "SAMEORIGIN" # XSS対策 Header always set X-XSS-Protection "1; mode=block" Header always set X-Content-Type-Options "nosniff" # XST対策 TraceEnable Off <Directory /var/www/html> # .htaccess の有効化 Al

############## ## 以上省略 ## ############## <IfModule unixd_module> # # If you wish httpd to run as a different user or group, you must run # httpd as root initially andit willswitch. # # User/Group: The name (or #number) of the user/group to run httpd as. #It is usuallygood practice tocreate a dedicated user and group for # running httpd, as with most system services. # User apache Group apache

はじめに Apacheの設定ファイル、ちゃんと書けますか?一つ一つ意味を理解していますか? http.confを開いた瞬間に「うっ頭が頭痛」になったことはないでしょうか? yumやaptでApacheをインストールして、設定ファイルをちょろっと編集しただけでお茶を濁したことはないでしょうか? でもいつまでもその状態ではいけません。そろそろ本気で勉強して無駄のない設定ファイルを書くときが来たのです。 2015年のWebサーバ界におけるApacheの立ち位置についておさらい 2015年現在、静的コンテンツの配信やリバースプロキシの役割はその用途に特化したWebサーバを使うのが主流になっています。具体的にはNginxがデファクトスタンダートになっています。 Apacheにもイベント駆動型で動くmpm eventというモジュールがあり、これを使えば高速に多数の接続をさばくことができます。 人間とウ
先日の日記『「10日でおぼえるPHP入門教室 第4版」はセキュリティ面で高評価』では、同書のアップロード機能のセキュリティ面を評価しつつ、「もうひと踏ん張り確認して欲しい内容がある」として、画像XSSの可能性について指摘しました。では、これを直せば完璧かというと、実はそうとも言えないという微妙な問題があります。それは、アップロード先の場所とファイル名の問題です。 ファイルをアップロードするディレクトリ: ドキュメントルート下の /php10/doc/ ファイル名: ブラウザから送信されたファイル名そのまま これらのうちファイル名の拡張子については、gif/jpg/jpeg/pngのみを許すという、いわゆるホワイトリスト検査がされていて、またgetimagesize()関数により、画像ファイルであることの簡易的なチェックをしています。しかし、この状態では、環境によってはアップロードしたファイ

こんにちは、虎塚です。 今週クラスメソッド社内で性能テストツールのApacheBench をテーマにした勉強会を行うことになりました(勉強会というと固い感じですが、経験者から知見をいろいろ教えてもらおうという雑談会です)。 そこで、ApacheBenchをまったく使ったことがない方の予習用に、ごく基本的な情報をまとめておきましたので、公開します。 ApacheBenchのインストール方法 Apache HTTP Serverをインストールします。 ApacheBenchの特徴 ApacheBenchは、Apache HTTP Serverに同梱されている性能テストツールです。コマンド名にちなんで、「ab」とも呼ばれています。 できること ApacheBenchは、1回のコマンド実行で、単一かつ同一のURLに対するリクエストを、指定した分だけ生成します。そのため、Webサーバやアプリケーショ

元ネタはこちら。 Apache AddHandler madness all over the placeGentoo Bug 538822 どういうことか 次のような指定は危険である。 AddHandlerphp5-script .php この時に指定される.phpはファイル名の末尾である必要はない。例えば、 aaa.php.html bbb.php.pngなどもphp5-scriptとして解釈されてしまうのだ。これは.XXX.YYYと複数の拡張子が書かれた場合、.XXXと.YYYもAddHandlerの対象となることが原因。 ちなみに次のような場合にはphp5-scriptとして解釈されない。ccc.php_foo (.php_fooとして解釈されるため) ddd.php_bar.html (.php_barと.htmlとして解釈されるため)実はこのことはApacheのドキュメン
Apacheのモジュールをアップデートしたときに通常は再起動を行っていますが、そもそも再起動が必要なのか、gracefulだけで大丈夫だったりしないかということを調べてみました。 Apacheのモジュールロードのタイミング モジュールをロードするコードはこのあたりだろうか。 https://github.com/apache/httpd/blob/2.4.10/modules/core/mod_so.c https://github.com/apache/httpd/blob/2.4.10/modules/core/mod_so.c Apache からは APR の apr_dso_load() を使っているみたいなので、APRの方を覗いてみる。 https://github.com/apache/apr/blob/1.5.1/dso/unix/dso.c 複数のOSをサポートするために
HTTPS(SSL利用)サイトがSEO的に優遇されるトレンドで、世間的にもHTTPS接続でサイト運用するサービスが増えてきています。 これが、ハイトラフィックサイトになってくると、このフロントエンドでSSL処理させることが負荷的にもなかなか辛いのです。 で、Apache 2.3以降では、Shared Object Cache Providerとして、memcachedが選択できるようになっています。 この仕組みを利用して、Apacheとmemcachedを並べることで、各サーバでユーザのSSLSession Cacheを共有しながらHTTPSリクエストを負荷分散できる構成を作ってみました。 WebサーバでSSLオフロード 常時SSLを利用したWebサイトを運用するために、SSLアクセラレータといったアプライアンス製品だとか、ソフトウェアだとApacheやNginxのSSLモジュールを使う

個人的Apacheチューニングのメモ。 間違いがあったら教えて下さい! prefork 前提 Apacheでは、リクエストはApacheの子サーバプロセスが処理する。 子サーバプロセスは動的にforkで生成されたり、殺されたりする。 が、forkはとても重い処理なので、forkが発生しないように設定するのがよい。 チューニング方針 負荷が高かろうが低かろうが常に一定数のプロセスが動いている状態にする。 preforkの動作 MaxClientsは絶対値。 子プロセス数はこの値を超えない。 (以下正確ではないですが簡単に) Apacheは負荷が高くなってきたら 子プロセスを生成していくアイドル状態の子プロセスはMinSpareServers以上になるよう維持 MaxClients以上の子プロセスは生成しない MinSpareServersよりMaxClientsが強い 負荷が低くなってきた

【この記事の所要時間 : 約 2 分】 Apacheのプロセスの状態をチェックするためには、Apacheのmod_statusによるステータス表示を利用すればいいということで、使わせてもらっている。 @IT – httpd.confによるWebサーバの最適化によると、 「W」や「R」で埋め尽くされ、プロセス数の上限に達している場合は、MaxClientsを見直して値を上げる必要があります。「.」が多いようなら、MaxClientsの値が大き過ぎます。ただし、「.」の最大数はMaxClients数ではなくServerLimit数を表しているため、 MaxClients < ServerLimit のように設定されている場合は、見た目上「.」が使い切られず残ります。そのため、MaxClientsが上限に達しているのか否かが分かりづらくなっています。 「_」で埋め尽くされるようなら、無駄なプロセ

1995年のWeb黎明期に誕生したWebサーバの「Apache」は、当時の主要WebサーバだったNCSAを瞬く間に抜き去り、翌年には業界最大手のシェアを持つWebサーバソフトウェアとなった。20年近い年月を経てなおトップの座に居続けるApacheだが、この状況に最近になり変化が訪れつつある。Netcraftが今年6月6日に発表した「June 2014 Web Server Survey」によれば、世界のWebサイト全体に対する最新調査において、MicrosoftのIIS(Microsoft Internet Information Services)で稼働するWebサイトの数がApacheに肉迫し、ほぼ拮抗状態となっている。 Apacheのシェアはここ数年減少の一途をたどっており、その減少分をMicrosoftが獲得し続けている形だ。直近の5月と6月のサイト数比較でも、Apacheのサイ

@hirose31さんと、Apache HTTPDからHTTPSでファイルダウンロード中にサーバプロセスがSIGBUSで死ぬって件にぶちあたり、 「OpenSSLの中でmemcpyがSIGBUSしてます」「な、なんだってー!」 って調べたのですが、理由は以下のとおりだった。 HTTPSの場合、デフォルト設定だとファイル読込にmmap(2)が使われる mmapされたファイルのサイズが変更されてもApacheはそれを検知しようがない そして、ファイル末尾以降のデータを読もうとするとセグメンテーションエラー(SIGBUS)が発生し、Apacheのサーバプロセスは異常終了する HTTPの場合は、ローカルファイルシステムの場合sendfile(2)が使われるので、ファイルサイズが変更になってもApacheは異常終了しない ただし、mod_deflateのような出力フィルタを使っている場合は、HTTP
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 Apache httpdの2.4系を触っていて、面白そうだなーと思う新しいコア機能を幾つか紹介したいと思います。こういうの欲しかった!と思える機能がちらほら見受けられます。 MPMをLoadableに扱える PreforkやWorker、eventのMPM切り替えを、これまではコンパイル時に行う必要がありましたが、それぞれのMPMがモジュール化されLoadableになりました。これによって、MPMを切り替えて試したりする作業が格段にやりやすくなったと思います。 むしろこれになれて2.2系を触ると、うおおおーっめんどくさい!ってなります。 モジュール単位やディレクトリ単位でログレベルを制御 エラーログの出力レベルを、モジュール単位で設定できたり

「無期限で世界規模で非独占的で使用料無料で取り消し不能な特許ライセンスを付与します」という条項があるので使わせてもらう側が「わーい、便利なライブラリだー」と思って使っていたら後から「特許料払え!」と言われるという悲劇が起こらないことだって。 3. 特許ライセンスの付与本ライセンスの条項に従って、各コントリビューターはあなたに対し、成果物を作成したり、使用したり、販売したり、販売用に提供したり、インポートしたり、その他の方法で移転したりする、無期限で世界規模で非独占的で使用料無料で取り消し不能な(この項で明記したものは除く)特許ライセンスを付与します。ただし、このようなライセンスは、コントリビューターによってライセンス可能な特許申請のうち、当該コントリビューターのコントリビューションを単独または該当する成果物と組み合わせて用いることで必然的に侵害されるものにのみ適用されます。あなたが誰かに
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く