1. 程式人生 > >squid完全攻略(一)squid優化後詳細安裝步驟

squid完全攻略(一)squid優化後詳細安裝步驟

Squid工作原理 Squid是Linux下一個快取Internet資料的代理伺服器軟體,它接收使用者的下載申請並自動處理所下載的資料。即當一個使用者下載www.idcshare的頁面,他請求squid為他取得這個頁面,suqid會連線到申請www.idcshare的網站並請求該主頁,接著把主頁傳給使用者並自己保留一份.當下一次有其他使用者請求同樣頁面時,squid會從磁碟中讀到儲存那份,這樣資料就會迅速傳輸到使用者的機器上. Squid支援以下協議 1) 客戶端協議:HTTP .FTP.Gopher.WAIS.SSL 2) 快取及管理協議:ICP(Internet Cache協議). HTCP(超文字緩衝協議).SNNP. Cache Digests 執行流程圖:

1) Client端向Server端傳送一個資料需求封包; 2) Server端接收之後,先比對這個封包的『來源』與預計要前往的『目標』網站是否為可接受?如果來源與目標都是合法的,或者說,來源與目標網站我們的Proxy都能幫忙取得資料時,那麼Server端會預計開始替Client取得資料。 3) Server首先會到自己的硬碟裡面,也就是所謂的cache 檢視一下有沒有Client端所需要的資料,如果有的話,那就將資料直接送到Client端而不經過向Internet要求資料的程式; 4) 將資料傳回給客戶端使用 5)在經過1, 2, 3查尋知道cache沒有資料,或者資料過期之後, Proxy會向Internet上面的目標網站要求資料; 6)在將資料取回之後, proxy會先將取得的資料『儲存一份到cache當中』; 7)最後才將資料傳回給Client端使用。 代理伺服器優點與型別
優點: 1)通過快取增加訪問速度 2)提供用私有ip訪問internet的方法 3)提高網路的安全性 4)方便對使用者的管理 型別: 1) 標準代理伺服器

2) 透明代理伺服器

3) 反向代理伺服器

安裝前期準備工作 1)原始碼編譯優化 一般情況下,優化引數都是通過export命令設定CFLAGSCXXFLAGS,然後configure的時候會自動讀入,make的時候會自動使用所選的優化引數。通過新增優化引數,讓程式針對某個CPU型號和某個系統進行最大優化,減少檔案大小、CPU使用率、記憶體使用率。優化後的程式,將不再具有跨系統跨平臺的能力。 如下圖:
[[email protected] soft]# cat /proc/cpuinfo |more   processor       : 0 vendor_id       : GenuineIntel cpu family      : 6 model           : 23 model name      : Intel(R) Xeon(R) CPU           E5420 @ 2.50GHz stepping        : 10 cpu MHz         : 2493.978 cache size      : 6144 KB physical id     : 0 siblings        : 4 core id         : 0 cpu cores       : 4 apicid          : 0 fdiv_bug        : no hlt_bug         : no f00f_bug        : no coma_bug        : no fpu             : yes fpu_exception   : yes cpuid level     : 13 wp              : yes flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush d ts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm bogomips        : 4987.95 由於伺服器model name 是Intel(R) Xeon(R) CPU,我選擇如下圖: 配置: export CHOST="i686-pc-linux-gnu" export CFLAGS="-march=Prescott -O2 -pipe -fomit-frame-pointer" export CXXFLAGS="${CFLAGS}" env

檢視設定環境變數是否生效 紅色標記,說明生效了. 3)修改描述符引數值 檔案描述符用來限制一個程式能同時開啟的檔案數目,預設是1024。也就是說,如果不修改檔案描述符,那麼一個程式只能同時開啟1024個檔案,而Squid會同時開啟成千上萬個檔案,所以遠遠是不夠的,為了保證最高的效率和響應速度,要更改檔案描述符的大小. 兩種情況:a.使用者每次訪問squidsquid會按照需要開啟檔案,然後讀取檔案內容再返回給使用者。 b.squid預先開啟訪問頻率高的檔案,使用者訪問squidsquid直接把內容返回給使用者。相對來說,後面的方法可以對使用者的請求進行更加快的反應。 首先修改以下兩個檔案。
#define __FD_SETSIZE 1024
1024改為65536,然後儲存,這是Linux能接受的最大數值。 剛才編輯的這兩個檔案是C/C++程式裡面的標頭檔案,編譯squid的時候會被自動引用。除了這兩個檔案以外,我們還需要對當前環境進行設定。也就是你用ssh登入到系統時的一些設定。每個登入程序都可以進行單獨的設定,當關閉目前登入回話,環境變數的設定就失效了. ulimit用來設定當前環境的一些資源限制。這個命令是對環境進行設定,所以退出當前登入程序後命令將會失效。 我們輸入下面的命令
#ulimit -Hs 65536
#ulimit -n 65536
也可以永久修改這些限制,開機自動生效,配置如下:
vi /etc/security/limits.conf,新增以下內容
*                soft   nofile          65536 
*                hard   nofile          65536
H引數是硬性限制,s是堆疊上限,n是檔案描述符上限。 註釋: ulimit 引數介紹:
-H 設定硬體資源限制.
-S 設定軟體資源限制.
-a 顯示當前所有的資源限制.
-c size:設定core檔案的最大值.單位:blocks
-d size:設定資料段的最大值.單位:kbytes
-f size:設定建立檔案的最大值.單位:blocks
-l size:設定在記憶體中鎖定程序的最大值.單位:kbytes
-m size:設定可以使用的常駐記憶體的最大值.單位:kbytes
-n size:設定核心可以同時開啟的檔案描述符的最大值.單位:n
-p size:設定管道緩衝區的最大值.單位:kbytes
-s size:設定堆疊的最大值.單位:kbytes
-t size:設定CPU使用時間的最大上限.單位:seconds
-v size:設定虛擬記憶體的最大值.單位:kbytes 安裝與配置 安裝  tar -zxvf squid-3.0.STABLE24.tar.gz cd squid-3.0.STABLE24 ./configure --prefix=/usr/local/squid\--enable-gnuregex\--enable-icmp\--enable-linux-netfilter\--enable-default-err-language="Simplify_Chinese"\--enable-kill-parent-hack\--enable-cache-digests\--enable-dlmalloc\--enable-poll\--enable-async-io=240\--enable-delay-pools\--with-filedescriptors=65536\--enable-snmp\--enable-arp-acl\--mandir=/usr/share/man/--with-large-files 註釋: 可以用命令檢視  ./configure --help --enable-gnuregex 在訪問控制列表和其他配置指令裡,squid使用正則表示式作為匹配機制。GNU的正則表示式庫包含在squid的原始碼包裡;它可以在沒有內建正則表示式的作業系統中使用。./configure指令碼偵察你係統中的正則表示式庫,假如必要,它可以啟用使用GNU正則表示式。如果因為某些理由,你想強制使用GNU正則表示式,比如在proxy未來的規劃當中。可能利用到正則表示法的方式來抵擋一些惡意的網站,你可以將這個選項加到./configure命令後. --enable-icmp squid能利用ICMP訊息來確定迴環時間尺寸,非常象ping程式。你能使用該選項來啟用這些功能。 --enable-linux-netfilter Netfilter是linux 2.4系列核心的包過濾器名字。假如你想在linux2.4或以後的版本中使用HTTP攔截功能,那麼啟用該選項。 --enable-default-err-language=lang 該選項設定error_directory指令的預設值。例如,假如你想使用荷蘭語,你能這樣指定: % ./configure --enable-default-err-language=Dutch 你也能在squid.conf裡指定error_directory指令,在附錄A中有描述。假如你忽略該選項,英語是預設錯誤語言。 --enable-kill-parent-hack 在我們關掉squid的時候,連同parent process 一起關掉 --enable-cache-digests Cache消化是ICP的另一個替代,但有著截然不同的特性 --enable-dlmalloc[=LIB] 在一些系統上,內建的記憶體分配機制(malloc)在使用squid時表現不盡人意。使用--enable-dlmalloc選項將squid原始碼包中的dlmalloc包編譯和連結進來。假如你的系統中已安裝dlmalloc,你能使用=LIB引數指定庫的路徑。 --enable-poll unix提供兩個相似的函式用以在I/O事件裡掃描開放檔案描述符:select()和poll()../configure指令碼通常能非常好的計算出何時使用poll()來代替select().假如你想強制使用poll(),那麼指定該選項。 --enable-async-io[=N_THREADS] 非同步I/O是squid技術之一,用以提升儲存效能。aufs模組使用大量的執行緒來執行磁碟I/O操作。該程式碼僅僅工作在linux和solaris系統中。=N_THREADS引數改變squid使用的執行緒數量。如果網站的伺服器配置很高,可以嘗試將這個數字改為160以上。如果是小網站的話,可以考慮降低到40左右. 請注意--enable-async-io是開啟其他三個./configure選項的快捷方式,它等同於: --with-aufs-threads=N_THREADS --with-pthreads --enable-storeio=ufs,aufs --enable-delay-pools 延時池是squid用於傳輸形狀或頻寬限制的技術。該池由大量的客戶端IP地址組成。當來自這些客戶端的請求處於cache丟失狀態,他們的響應可能被人工  --with-filedescriptors=65536 支援最大檔案描述符 --enable-snmp 簡單網路管理協議(SNMP)是監視網路裝置和伺服器的流行方法。該選項導致編譯過程去編譯所有的SNMP相關的程式碼,包括一個裁切版本的CMU SNMP庫。 --enable-arp-acl 允許基於MAC地址的存取過濾 --mandir=/usr/share/man 指定man的安裝目錄 --with-large-files 讓log支援大於2G make; make install make[3]: Leaving directory `/root/soft/squid-3.0.STABLE24/tools' make[2]: Leaving directory `/root/soft/squid-3.0.STABLE24/tools' make[1]: Leaving directory `/root/soft/squid-3.0.STABLE24/tools' make[1]: Entering directory `/root/soft/squid-3.0.STABLE24' Build Successful. make[2]: Entering directory `/root/soft/squid-3.0.STABLE24' make[2]: Nothing to be done for `install-exec-am'.==================說明安裝成功 make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/root/soft/squid-3.0.STABLE24' make[1]: Leaving directory `/root/soft/squid-3.0.STABLE24' [[email protected] squid-3.0.STABLE24]#         ll /usr/local/squid--enable-gnuregex/ 總計 24 drwxr-xr-x 2 root root 4096 03-04 23:35 bin drwxr-xr-x 2 root root 4096 03-04 23:35 etc drwxr-xr-x 2 root root 4096 03-04 23:35 libexec drwxr-xr-x 2 root root 4096 03-04 23:35 sbin drwxr-xr-x 5 root root 4096 03-04 23:35 share drwxr-xr-x 3 root root 4096 03-04 23:35 var bin/ :放置主要的squid執行scripts的目錄,重要的是RunCache那個檔案; etc/ :幾乎所有的squid設定檔都在這裡; libexec/ :一些函式庫; sbin/ :重要的就是那個squid的執行檔! share/ :一些錯誤訊息程式碼表示檔案,以及一些小圖示放置的目錄; var/ :預設是放置log file的,不過我不喜歡放在這裡,這點等一下我們會修改的! 第一次執行squid時,要先設定/usr/local/squid/var許可權,還有在/usr/local/squid/etc/squid.conf新增主機,visible_hostnam viong 並制定http_port 埠號.這裡預設個80 # chown -R nobody:nobody /usr/local/squid/var  /usr/local/squid/sbin/squid –zD 首次執行squid需要初始化cache,由於squid要驗證其DNS可用才能啟動,目前都沒配置,所以我先禁用初始化DNS測試,先讓squid啟動  netstat -ntpl |grep 80 tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN     [[email protected] soft]#   sh squid.sh start   

相關推薦

squid完全squid優化詳細安裝步驟

Squid工作原理 Squid是Linux下一個快取Internet資料的代理伺服器軟體,它接收使用者的下載申請並自動處理所下載的資料。即當一個使用者下載www.idcshare的頁面,他請求squid為他取得這個頁面,suqid會連線到申請www.idcshare的網

ClearCase完全:Base和UCM的前生後世

ClearCase到底是幹嘛的? 通俗的我們可以認為是一款IBM出的原始碼管理工具。 ClearCase的四大功能? (版本管理+過程管理+工作空間管理+bulid管理)有個經典的圖,各個功能圖裡面說的很清楚了。 Base和UCM到底有什麼區別? Base 就是Clear

簡易Python入門

python是最近越來越火的程式語言,也是非常多準備踏入程式設計領域的首選語言。 w3cschool經過精心的歸納和總結,為各位小夥伴帶來一套簡單,並且有效的入門攻略。 請各位小夥伴務必認真閱讀和觀看今天先來聊聊Python和Python的學習方法。

VSCode外掛開發全概覽

文章索引 寫在前面 一年前我寫了一篇3萬多字的Chrome外掛(擴充套件)開發全攻略,反響還不錯,幫助了很多新手快速上手,甚至包括大名鼎鼎的紅芯瀏覽器(戳這裡瞭解更多)。 最近因工作需要又接觸到了vscode外掛開發,所以趁勢再寫一篇有關vscode外掛開發的文章,記錄一些自己踩過的坑以及接觸vscod

ClearCase完全 UCM下的一些概念全解析1

上篇文章中的連結搞錯, clearcase的實施方案 ,Base的。其實就是較多的使用分支和標籤兩種策略 用來初步明白Base專案差不多。深入的還需要看更多的資料 先講下UCM的發展歷史,1999就提出了,然後到現在已經10多年了。所以算是相當成熟了,IBM官方出了

在Struts2中實現自定義分頁標籤全

我們先看看這個分頁標籤的效果: 使用標籤的最大好處就是下次再用到的話直接引用就行,而不必重寫。 本人對Struts2自定義標籤沒有太深究,在網上找了一些資料可以參考參考: 其實,開發自定義標籤並不需要Struts2的支援,一般情況下,只需要繼承javax.servle

NginxLinux上的Nginx安裝步驟

一、安裝準備 首先由於nginx的一些模組依賴一些lib庫,所以在安裝nginx之前,必須先安裝這些lib庫,這些依賴庫主要有g++、gcc、openssl-devel、pcre-devel和zlib-devel 所以執行如下命令安裝     $   yum install

ClearCase完全 ClearCase賬戶管理

上個文章說說到要建立不同的使用者組。然後不同使用者組在VOB中對應不同的許可權 ClearCase7.0還沒有自己的的賬戶管理體系。主要是藉助域使用者管理器。由作業系統實現。 據說ClearCase7.1有了自己的賬戶管理體系。還沒去查證。 (其實也無非就是,使用者,使用者

Squid代理服務器

Squid 代理服務器 搭建代理傳統squid代理服器 1、實驗拓撲:2、實驗步驟1)在服務器B上安裝Squid代理服務器軟件(掛載光盤,解壓縮)2)編譯安裝完成後執行make

妖怪與和尚過河問題解法完全C++完整程式碼實現

如圖 1 所示。有三個和尚和三個妖怪(也可翻譯為傳教士和食人妖)要利用唯一一條小船過河,這條小船一次只能載兩個人,同時,無論是在河的兩岸還是在船上,只要妖怪的數量大於和尚的數量,妖怪們就會將和尚吃掉。現在需要選擇一種過河的安排,保證和尚和妖怪都能過河且和尚不能被妖怪吃掉。 圖 1 妖怪與和尚過河遊戲

分塊查詢演算法完全原理、實現及時間複雜度

一般對於需要查詢的待查資料元素列表來說,如果很少變化或者幾乎不變,則我們完全可以通過排序把這個列表排好序以便我們以後查詢。但是對於經常增加資料元素的列表來說,要是每次增加資料都排序的話,那真的是有點太累人了。 所以之前我們分析過,對於幾乎不變的資料列表來說,排序之後使用二分查詢是很不錯的,但是對於經常變動的

ClearCase完全十二 CCRC客戶端安裝和外掛安裝

CCRC的環境配置說起來簡單,其實折騰人。 安裝問題。 接下來就是Eclipse可能需要提示缺少org.eclipse.draw2d 外掛,所以需要手工安裝GEF這個外掛,下載地址 。注意版本對應。 Clearcase好像版本上下不相容,CCRC2003和7.0的不能

Linux實戰第一篇:Centos6.9/RHEL6.9詳細安裝LVM

linux個人筆記分享(在線閱讀):http://note.youdao.com/noteshare?id=bb2ad6216bff8cddaa3e360c76392c9b PDF版本下載http://down.51cto.com/data/2321269本文出自 “人才雞雞” 博客,請務必保留此出處http

博客園積分與排名升級

idt 互聯 png 積分 eid class .html googl 影響力 博客園積分算法探討 今天在dudu的《博客園FAQ》上看到了博客積分算法規則。因為同樣是搞互聯網的,平時工作也涉及到用戶積分算法的設計,所以特把此問題拿出來分析探討。初衷只是純學術的研究探討,

【微軟大法好】VS Tools for AI全2

port shell orf 方式 virt cnblogs 我們 玩耍 虛擬 接著上文,我們來討論如何使用Azure資源來訓練我們的tensorflow項目。Azure雲我個人用得很多,主要是因為微軟爸爸批了150刀每月的額度,我可以愉快地玩耍。 那麽針對Azure,有成

程序員技術練級

proxy sele more class 算法 tp服務器 list scrip 子程序 前言   你是否覺得自己從學校畢業的時候只做過小玩具一樣的程序?走入職場後哪怕沒有什麽經驗也可以把以下這些課外練習走一遍(朋友的抱怨:學校課程總是從理論出發,作業項目都看不出有什麽實

雲架構師進階1

此文已由作者劉超授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。   一、架構的三個維度和六個層面               1.1、三

【乾貨】Chrome外掛(擴充套件)開發全轉載

轉載來源:https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html 【乾貨】Chrome外掛(擴充套件)開發全攻略 寫在前面 我花了將近一個多月的時間斷斷續續寫下這篇博文,並精心寫下完整demo,寫部落格的辛苦大家懂的,

雲架構師進階3

此文已由作者劉超授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 十、基於Hadoop和Spark瞭解大資料平臺 對於資料架構的部分,其實經歷了三個過程,分別是Hadoop Map-Reduce 1.0,基於Yarn的Map-Reduce 2.0, 還有Sp

VSCode外掛開發全WebView

更多文章請戳VSCode外掛開發全攻略系列目錄導航。 什麼是Webview 大家都知道,整個VSCode編輯器就是一張大的網頁,其實,我們還可以在Visual Studio Code中建立完全自定義的、可以間接和nodejs通訊的特殊網頁(通過一個acquireVsCodeApi特殊方法),這個網頁就叫W