ホームページ バックエンド開発 PHPチュートリアル Linux_PHP チュートリアルでの Varnish キャッシュの構成最適化の分析

Linux_PHP チュートリアルでの Varnish キャッシュの構成最適化の分析

Jul 21, 2016 pm 03:05 PM
http linux varnish 最適化 アクセル オープンソース 支払い キャッシュ 解析する 構成 ハイパフォーマンス

Varnish は、高性能のオープンソース HTTP アクセラレータです。ノルウェー最大のオンライン新聞である Verdens Gang では、元の 12 個の Squid ユニットの代わりに 3 個の Varnish ユニットを使用しており、パフォーマンスは以前よりも優れています。

しかし、古い Squid と比較すると、それぞれに独自の利点と欠点があります。インターネット上で多数の比較が行われているのは、使い慣れたアプリケーションを最大限に活用した場合にのみ、Squid を最大限に活用できる可能性があります。最も強力な力は、Varnish が「ビジュアル ページ キャッシュ」テクノロジーを使用しているため、Squid がメモリとディスク内で頻繁にファイルを交換することを回避します。イカより性能が高い。

Varnish 管理ポートを通じて、正規表現を使用してキャッシュの一部を迅速かつバッチでクリアできます。これは Squid にはできないことです。
varnish のいくつかの洞察と設定方法について簡単な紹介と注意事項を説明します


実験環境: Red Hat Enterprise Linux Server release 5.4 (Tikanga)
Kernel 2.6.18-164.el5
yum install pcre-devel # # ソフトウェア パッケージを事前にインストールしてください。インストールしない場合は、エラーが表示されます
tar zxvf varnish-2.1.3.tar.gz
cd varnish-2.1.3
./configure --prefix=/usr/local/varnish-2.1。 3
make && make install
設定ファイルを編集します。テンプレートはありますが、コメントが多すぎるため、自分で新しいものを作成するのが最善です
vim /usr/local/varnish-2.1.3/etc/varnish/ varnish.conf

######## ####以下に設定ファイルの内容とコメントを添付します####################
#httpリクエスト処理プロセス
#1、リクエストエントリステータスを受信、vclに基づいてパスまたはローカルクエリを検索します。
#lookup、ハッシュテーブル内のデータを検索し、見つかった場合はヒット状態に入り、そうでない場合はフェッチ状態に入ります
#pass、バックグラウンドを選択し、フェッチ状態に入ります
#fetch、リクエストの処理後 クライアントを取得し、リクエストを送信し、データを取得してローカルに保存します
#deliver、データをクライアントに送信し、doneと入力します
#完了、処理は完了しました

##########バックエンドサーバーの構成## #########

コードをコピーしますコードは次のとおりです:
backend linuxidc01 {
.host = "192.168.1.142";
.port = "7070";
.probe = {
.timeout = 5s; .window = 10; .threshold = 8;
}
バックエンド linuxidc02 {
.host = "192.168.1.141";
.port = " 7070";
.probe = {
.timeout = 5s;
.interval = 2s;
. window = 10;
.threshold = 8;
}
}



########## ####バックエンド サーバー グループを構成し、6 秒間正常性検出を実行し、ランダム モードを使用して重みを設定します########
##########別の方法、ラウンドロビン、デフォルトでポーリングするメカニズム################# #


コードをコピーします
コードは次のとおりです:
director linuxidc15474random = linuxidc02; .weight = 2;


########定義次のアドレスをクリアできるようにするアクセス リスト ワニス キャッシュ#####################




コードをコピーします

コードは次のとおりです。

acl ローカル { "localhost";
" 127.0.0.1";
}

########URL から対象となるバック サーバーとキャッシュ構成のタイプを決定します########################## #
コードをコピーします コードは次のとおりです:

sub vcl_recv
{
If (req.http.host ~ "^linuxidc15474.vicp.net") #一致するドメイン名ジャンプ バックエンド サーバー
不明なホスト名! ";} (If (REQ.Request ==" Purge ") # #" "" {{if (! Client.ip ~ local) {
エラー 405 "許可され​​ていません。"
return (lookup); .(jpg|png|gif| swf|jpeg| ico)) {{
UNSET REQ.HTTP.COOKIE;
}
#Judging Req.http.x-FORWARDED-FOR フロントエンドに複数のリバースプロキシがある場合、クライアントの IP アドレスを取得できます。
if (req.http.x-forwarded-for)
{
set req.http.X-Forwarded-For = req.http.X-Forwarded-For ", " client.ip;
else { set re q .http.X-Forwarded-For = client.ip; }
##varnish实现图片の防盗链
# if (req.http.referer ~ "http://.*)
# {
# if ( !(req.http.referer ~ "http://.*) vicp.net" ||
# req.http.referer ~ "http://.*linuxidc15474.net" ) )
# {
# set req.http.host = "linuxidc1547 4.vicp.net";
# セットreq.url = "/referer.jpg";
# }
# return(lookup);
# }
# else {return(pass);}
if (req.request != "GET" &&
リクエストリクエスト!= "HEAD" &&
req.request != "PUT" &&
req.request != "POST" &&
req.request != "TRACE" &&
req.request != "OPTIONS"
リクエストリクエスト!= "DELETE")
{ return (pipe); }
#对非GET|HEAD请要求の直接转発行给后端服务器
if (req.request != "GET" && req.request != "HEAD")
{ return (pass); }
##对GET请求、url里以.php和.php?结尾的、直转発行给后端服务器
if (req.request == "GET" && req.url ~ ".(php)($|?)")
{ return (pass); }
##对请求中有验证及cookie,直转発行给后端服务器
if (req.http.Authorization || req.http.Cookie)
{ return (pass);}
{
##除以上的访问请求,从缓存中查找
return (lookup);
}
##指定されたフォント目录不実行缓存
if ( req.url ~ "^/fonts/")
{ return (pass); }
}
sub vcl_pipe
{ return (パイプ); }
##进入パスモード,请求被送后端,後端返回数据客户端,但不通過入存処理
sub vcl_pass
{ return (pass); }
sub vcl_hash
{
set req.hash += req.url;
if (req.http.host)
{ set req.hash += req.http.host; }
else { set req.hash += server.ip;
戻り値 (ハッシュ);
}
##在検索後如果在キャッシュ中找到请要求存,一般以下面几个关键词结束
sub vcl_hit
{
if (!obj.cacheable) { return (パス); }
return (delivery); Varnish サーバーのキャッシュ タイプ、バックエンドからデータを取得した後に
sub vcl_fetch を呼び出します
{ if (!beresp.cacheable)
} ##WEB サーバーはキャッシュされないコンテンツを指定します。 if(beresp.http.pragma〜 "no-cache" || beresp.http.cache-cache〜 "no-cache" ||beresp。http.cache-control〜 "private") "GET" && req.url ~ ".(js|css|mp3|jpg|png|gif|swf|jpeg|ico)$") get に含まれる HTML などの静的ページにアクセスし、300 秒間キャッシュされます
if ( req.request == "GET" && req.url ~ "/[0-9].htm$")
(Return (Deliver);
}
#### キャッシュ ヒットを表示するにはページ ヘッド情報を追加します#######
#########################上記はvarnishの設定ファイルです################ ## #########
ユーザーの作成:
groupadd www
useradd www -g www
varnish_cacheのキャッシュ場所を作成します
mkdir /data/varnish_cache
varnishの開始
ulimit -SHn 8192 ## ## 設定ファイル記述子、私のマシンのパフォーマンスが良くないので、独自の構成に従って設定できます
/usr/local/varnish-2.1.3/sbin/varnishd -u www -g www -f /usr /local/varnish- 2.1.3/etc/varnish/varnish.conf -a 0.0.0.0:80 -s ファイル、/data/varnish_cache/varnish_cache.data,100M -w 1024,8192,10 -t 3600 -T 127.0 .0.1:3500
####-u 実行するもの -g 実行するグ​​ループ -f ワニス構成ファイル -a IP とポートのバインド -s ワニス キャッシュ ファイルの場所とサイズ -w 最小、最大スレッドおよびタイムアウト -T ワニス管理ポート、主にキャッシュをクリアするために使用されます
#varnishd プロセスを終了します
pkill varnishd
varnishncsa を開始して、Varnish アクセス ログをログ ファイルに書き込みます:
/usr/local/varnish-2.1.3/bin/varnishncsa - w /data/ logs/varnish.log &
毎日 0:00 に実行され、Varnish ログを日ごとに切り取り、圧縮ファイルを生成し、前月の古いログを削除するスクリプト (/var/logs/cutlog.sh) ):
vim /usr/local/ varnish-2.1.3/etc/varnish/cut_varnish_log.sh
次のスクリプトを作成します:
#!/bin/sh
# このファイルは 00:00 に実行されます
date=$(date -d "昨日" +"%Y -%m-%d")
pkill -9 varnishncsa
mv /data/logs/varnish.log /data/logs/${date}.log
/usr/local/varnish -2.1.3/bin/varnishncsa - w /data/logs/varnish.log &
mkdir -p /data/logs/varnish/
gzip -c /data/logs/${date}.log > logs/varnish/${date}.log.gz
rm -f /data/logs/${date}.log
rm -f /data/logs/varnish/$(date -d "-1 month" +" %Y-%m*").log.gz
スケジュールされたタスク:
crontab -e
00 00 * * * /usr/local/varnish-2.1.3/etc/varnish/cut_varnish_log.sh

Linux カーネルパラメータの最適化
vi /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
ネット.ipv4.ip_local_port_range = 5000 65000
make 設定が有効になります
/sbin/sysctl -p

Varnish 管理ポート経由で、正規表現を使用してキャッシュをバッチクリアします
すべてのキャッシュをクリアします
/usr/local/varnish-2.1。 3/bin/varnishadm -T 127.0.0.1:3500 url .purge *$
イメージディレクトリ内のすべてのキャッシュをクリア
/usr/local/varnish-2.1.3/bin/varnishadm -T 127.0.0.1:3500 url.purge /image/
127.0.0.1:3500 はクリアされるキャッシュサーバーです アドレス www.linuxidc.com はパージされたドメイン名です /static/image/tt.jsp はパージされた URL アドレスリストです
/usr/local/varnish- 2.1.3/bin/varnishadm -T 127.0.0.1:3500 パージ " req.http.host ~ www.linuxidc.com$ && req.url ~ /static/image/tt.jsp"
++++++ ++++++++++++++++ ++++++++++++++++++++++++++++++++ ++++++++++
Squid キャッシュをクリアする方法 PHP 関数
コードをコピー コードは次のとおりです:

function purge($ip, $url )
{
$errstr = '';
$f p = fsockopen ($ip, 80, $errno, $errstr, 2);
if (!$fp) {
false を返します。 PURGE $url HTTP/1.1rn";
$out .= "Host:blog.s135.comrn";
($fp)
true を返します。
++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++
ブート時に自動的に起動するように Varnish を設定します
vim /etc/rc.d/rc.local
最後の行に次の内容を記述します。
ulimit -SHn 8192
/usr/local/varnish-2.1.3/sbin/varnishd -u www -g www -f /usr/local/varnish-2.1.3/etc/varnish/varnish.conf -a 0.0。 0.0:80 -s ファイル,/data/varnish_cache/varnish_cache.data,100M -w 1024,8192,10 -t 3600 -T 127.0.0.1:3500
/usr/local/varnish-2.1.3/bin/varnishncsa - w /data/logs/varnish.log &
Varnish サーバーの接続数とヒット率を表示します:
/usr/local/varnish-2.1.3/bin/varnishstat
上記は varnish のステータスです、
1675 0.00 0.06受信したクライアントリクエストは、サーバーが受信したクライアントリクエストの数
179 0.00 0.01 キャッシュヒット数は、キャッシュ内のヒット数であり、キャッシュからデータが取得されてクライアントに返される、つまりヒット率
11 0.00 0.00 キャッシュ ミスは、バックエンド サービス アプリケーションからのスキップ パス キャッシュです。データがユーザーに返された回数を取得します
どの Varnish コマンドが使用できるかを確認するには、ヘルプを使用してください:
/usr/local/varnish-2.1。 3/bin/varnishadm -T 127.0.0.1:3500 ヘルプ

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327719.html技術記事 Varnish は、高性能のオープンソース HTTP アクセラレータです。ノルウェー最大のオンライン新聞である Verdens Gang は、オリジナルの 12 個の Squid ユニットの代わりに 3 個の Varnish ユニットを使用しており、パフォーマンスは以前よりも向上しています。 でもベテランのスクエニとは…
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Linuxアーキテクチャ:5つの基本コンポーネントを発表します Linuxアーキテクチャ:5つの基本コンポーネントを発表します Apr 20, 2025 am 12:04 AM

Linuxシステムの5つの基本コンポーネントは次のとおりです。1。Kernel、2。Systemライブラリ、3。Systemユーティリティ、4。グラフィカルユーザーインターフェイス、5。アプリケーション。カーネルはハードウェアリソースを管理し、システムライブラリは事前コンパイルされた機能を提供し、システムユーティリティはシステム管理に使用され、GUIは視覚的な相互作用を提供し、アプリケーションはこれらのコンポーネントを使用して機能を実装します。

GITの倉庫アドレスを確認する方法 GITの倉庫アドレスを確認する方法 Apr 17, 2025 pm 01:54 PM

gitリポジトリアドレスを表示するには、次の手順を実行します。1。コマンドラインを開き、リポジトリディレクトリに移動します。 2。「git remote -v」コマンドを実行します。 3.出力と対応するアドレスでリポジトリ名を表示します。

Apr 16, 2025 pm 07:39 PM

NotePadはJavaコードを直接実行することはできませんが、他のツールを使用することで実現できます。コマンドラインコンパイラ(Javac)を使用してByteCodeファイル(filename.class)を生成します。 Javaインタープリター(Java)を使用して、バイトコードを解釈し、コードを実行し、結果を出力します。

コードを書いた後に崇高に実行する方法 コードを書いた後に崇高に実行する方法 Apr 16, 2025 am 08:51 AM

Sublimeでコードを実行するには6つの方法があります。ホットキー、メニュー、ビルドシステム、コマンドライン、デフォルトビルドシステムの設定、カスタムビルドコマンド、プロジェクト/ファイルを右クリックして個々のファイル/プロジェクトを実行します。ビルドシステムの可用性は、崇高なテキストのインストールに依存します。

Linuxの主な目的は何ですか? Linuxの主な目的は何ですか? Apr 16, 2025 am 12:19 AM

Linuxの主な用途には、1。Serverオペレーティングシステム、2。EmbeddedSystem、3。Desktopオペレーティングシステム、4。開発およびテスト環境。 Linuxはこれらの分野で優れており、安定性、セキュリティ、効率的な開発ツールを提供します。

Laravelインストールコード Laravelインストールコード Apr 18, 2025 pm 12:30 PM

Laravelをインストールするには、これらの手順を順番に進みます。コンポーザー(MacOS/LinuxとWindows用)インストールLaravelインストーラーをインストールします。

GITソフトウェアのインストール GITソフトウェアのインストール Apr 17, 2025 am 11:57 AM

GITソフトウェアのインストールには、次の手順が含まれています。インストールパッケージをダウンロードしてインストールパッケージを実行して、インストール構成gitインストールgitバッシュ(Windowsのみ)を確認します

重要なgit構成グローバルプロパティを設定する方法 重要なgit構成グローバルプロパティを設定する方法 Apr 17, 2025 pm 12:21 PM

開発環境をカスタマイズするには多くの方法がありますが、グローバルGit構成ファイルは、ユーザー名、電子メール、優先テキストエディター、リモートブランチなどのカスタム設定に使用される可能性が最も高いものです。グローバルGIT構成ファイルについて知っておくべき重要なことは次のとおりです。

See all articles