私はすでにこれに関する既存の質問を見つけようとしましたが、適切な一致を見つけることができませんでした。
公開サイトのデプロイプロセスの一環として、シンボリックリンクを使用してWebアプリケーションのバージョンを交換しています。
たとえば、ここにdocrootがあるvhostabc.comがあります:/var/www/abc.com
Docroot自体(/var/www/abc.com)
は、アプリケーションのWebアクセス可能なディレクトリ(/var/www/package/buildX/web)
へのシンボリックリンクです。
新しいビルドをデプロイするときは、シンボリックリンクを交換して、新しいビルドへの別のシンボリックリンクに置き換えるだけです。
質問私が持っているのは、Apache docroot
にシンボリックリンクを使用した場合のパフォーマンスのオーバーヘッド(または私が持つべき懸念)は何ですか?
最初の問題は、これらのファイルがすべて同じファイルシステムまたは物理ストレージデバイスにあるかどうかです。その場合、直接参照とシンボリックリンクの違いを検出することはほぼ不可能です。
ここでは桁違いに考える必要があります。アプリケーションはおそらくスクリプト言語とデータベースによって支えられています。アプリケーションのこれらの要素は、マイナーなファイルシステム機能ではなく、制限要因になります。ジェフ・アトウッドはこれをこの中で最もよく説明しています ブログ投稿 。
Symlinkのパフォーマンスヒットについて心配する必要はありません。事実上、他のすべてはその前のボトルネックになります。シンボリックリンクの解決には、CPUサイクルが多すぎません。 PHPスクリプトを実行し、データベースクエリと結果セットを処理し、Apacheのmod_securityなどのモジュールを使用することが本当のボトルネックになります。
理論的には、サーバーが提供するものがすべて静的コンテンツであれば、何かを最適化できます。それでも、Webサーバーやカーネルのパラメーターを調整し、ハードウェアをスケーリングすることは正しいことであり、シンボリックリンクの処理などのばかげたマイクロ最適化ではありません。シンボリックリンクは、Webサイトのバージョンなどを切り替えるためのクリーンで便利な方法を提供します。楽しく使ってください。