1. 程式人生 > >高效能快取伺服器Squid架構配置

高效能快取伺服器Squid架構配置

隨著網站訪問人數越來越多,承受的併發和壓力也越來越高,這時候我們需要對網站和架構進行優化,今天我們來討論使用Squid對架構進行優化,快取網站。網上對squid描述的文章也有成千上萬,我這裡簡單記錄一下實踐的步驟。

一、實施環境

  • 系統版本:CentOSx86_64 5.8
  • Squid版本:squid-2.6
  • Nginx版本:nginx-1.4.2

二、正式安裝

安裝之前我們需要對系統進行優化,主要優化系統核心相關引數,僅供參考:

  1. #sysctl.conf config 2014-03-26 
  2. net.ipv4.ip_forward = 0
  3. net.ipv4.conf.default.rp_filter = 1
  4. net.ipv4.conf.default.accept_source_route = 0
  5. kernel.sysrq = 0
  6. kernel.core_uses_pid = 1
  7. net.ipv4.tcp_syncookies = 1
  8. kernel.msgmnb = 65536
  9. kernel.msgmax = 65536
  10. kernel.shmmax = 68719476736
  11. kernel.shmall = 4294967296
  12. net.ipv4.tcp_max_tw_buckets = 10000
  13. net.ipv4.tcp_sack = 1
  14. net.ipv4.tcp_window_scaling = 1
  15. net.ipv4.tcp_rmem
     = 4096        87380   4194304 
  16. net.ipv4.tcp_wmem = 4096        16384   4194304 
  17. net.core.wmem_default = 8388608
  18. net.core.rmem_default = 8388608
  19. net.core.rmem_max = 16777216
  20. net.core.wmem_max = 16777216
  21. net.core.netdev_max_backlog = 262144
  22. net.core.somaxconn = 262144
  23. net.ipv4.tcp_max_orphans = 3276800
  24. net.ipv4.tcp_max_syn_backlog
     = 262144
  25. net.ipv4.tcp_timestamps = 0
  26. net.ipv4.tcp_synack_retries = 1
  27. net.ipv4.tcp_syn_retries = 1
  28. net.ipv4.tcp_tw_recycle = 1
  29. net.ipv4.tcp_tw_reuse = 1
  30. net.ipv4.tcp_mem = 94500000 915000000 927000000 
  31. net.ipv4.tcp_fin_timeout = 1
  32. net.ipv4.tcp_keepalive_time = 15
  33. net.ipv4.ip_local_port_range = 1024    65535 

接下來上自動安裝Squid指令碼,裡面分別配置了兩個虛擬主機域名,前端有LVS,LVS均衡後端多組squid叢集,根據命中率去調整squid叢集的數量,Squid後端均衡Nginx或者Apache。(完整的架構LVS+Keepalived+Squid+Nginx+Resin/Tomcat/PHP+MySQL叢集)

簡單邏輯圖如下:

wKiom1MyeQCSP8bRAAGXIgAao8Q437.jpg

直接上指令碼:

  1. #!/bin/sh 
  2. #Auto make install squid server 
  3. #Author wugk 2014-03-26 
  4. SQUID_CNF=/etc/squid/squid.conf 
  5. CACHE_DIR=( 
  6.     /data/cache1 
  7.     /data/cache2 
  8. #Install squid shell 
  9. yum install -y squid 
  10. #config squid.conf 
  11. cat >>$SQUID_CNF <<EOF
  12. #global config squid.conf 2014-03-26 
  13. http_port 80 accel vhost vport 
  14. cache_peer 192.168.149.128 parent 80 0 originserver name=wugk1
  15. cache_peer 192.168.149.129 parent 80 0 originserver name=wugk2
  16. cache_peer_domain wugk1 www.wugk1.com 
  17. cache_peer_domain wugk2 www.wugk2.com 
  18. visible_hostname localhost 
  19. forwarded_for off 
  20. via off 
  21. cache_vary on 
  22. #acl config 
  23. acl manager proto cache_object 
  24. acl localhost src 127.0.0.1/32 
  25. acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 
  26. acl localnet src 10.0.0.0/8     # RFC1918 possible internal network 
  27. acl localnet src 172.16.0.0/12  # RFC1918 possible internal network 
  28. acl localnet src 192.168.0.0/16 # RFC1918 possible internal network 
  29. acl SSL_ports port 443 
  30. acl Safe_ports port 80 8080         # http 
  31. acl Safe_ports port 21          # ftp 
  32. acl Safe_ports port 443         # https 
  33. acl all src 0.0.0.0/0 
  34. acl CONNECT method CONNECT 
  35. http_access allow manager localhost 
  36. http_access deny manager 
  37. http_access deny !Safe_ports 
  38. http_access deny CONNECT !SSL_ports 
  39. http_access allow localnet 
  40. http_access allow localhost 
  41. http_access allow all 
  42. acl PURGE method PURGE 
  43. http_access allow PURGE localhost 
  44. http_access deny PURGE 
  45. #squid config 2014-03-25 
  46. cache_dir aufs /data/cache1 10240 16 256 
  47. cache_dir aufs /data/cache2 10240 16 256 
  48. cache_mem 4000 MB 
  49. maximum_object_size 8 MB 
  50. maximum_object_size_in_memory 256 KB 
  51. hierarchy_stoplist cgi-bin ? 
  52. coredump_dir /var/spool/squid 
  53. refresh_pattern ^ftp:           1440    20%     10080 
  54. refresh_pattern ^gopher:        1440    0%      1440 
  55. refresh_pattern -i (/cgi-bin/|\?) 0     0%      0 
  56. refresh_pattern \.(jpg|png|gif|mp3|xml|html|htm|css|js) 1440    50%     2880    ignore-reload 
  57. refresh_pattern .               0       20%     4320 
  58. EOF 
  59. #config cache_dir 
  60. mkdir -p  ${CACHE_DIR[@]} ;chown -R squid:squid  ${CACHE_DIR[@]} 
  61. #restart squid server 
  62. /etc/init.d/squid restart 
  63. if 
  64.     [ "$?" == "0" ];then 
  65.     echo "The Squid Server Install Successfully !!" 
  66. else 
  67.     echo "The Squid Server Install Failed !!,Please Check Log......"                                                                                                                                                                          
  68. fi 

最後測試,前端LVS截圖(注LVS此處不配置了,部落格有專門的安裝方法)

wKiom1MyokSjpHrmAAIfiwjj0yc342.jpg

通過瀏覽器檢視head頭,快取命中情況截圖如下:

wKiom1MyjuvyPcYVAAJ2smk3I8A715.jpg

通過命令

  1. squidclient -p 80 mgr:info |egrep "(Request Hit Ratios|Byte Hit Ratios)" 

檢視快取命中率如下:

wKiom1Mzl4DQS5i0AALkpC-Girk997.jpg

 三、批量清空快取

使用Shell指令碼批量清空squid快取指令碼auto_clean_cache.sh

  1. #!/bin/sh 
  2. DIR=/data/cache/ 
  3. Command=/usr/sbin/squidclient 
  4. if 
  5.         [ "$1" = "" ];then 
  6.         echo "Usage:{$0 "\$1" ,Example exec $0 forum.php}" 
  7.         exit 
  8. fi 
  9. grep -r -a $1 ${DIR} | strings | grep "http:"|grep -v "=" >list.txt 
  10. count=`cat list.txt|wc -l` 
  11. if 
  12.         [ "$count" -eq "0" ];then 
  13.         echo -e "---------------------------------\nThe $1 cache already update,Please exit ......"   
  14.         exit 
  15. fi 
  16. while read line 
  17. do 
  18.         $Command -m PURGE -p 80 "$line" >>/dev/null 
  19.         if [ $? -eq 0 ];then 
  20.         echo -e "----------------------------------\nThe $line cache update successfully!" 
  21.         fi 
  22. done <list.txt

指令碼執行:

  1. [[email protected] ~]# sh auto_clean_cache.sh forum.php 
  2. ---------------------------------- 
  3. The http://www.wugk2.com/forum.php cache update successfully! 
  4. [[email protected] ~]# 

更多squid優化及深入配置後期更新。


相關推薦

高效能快取伺服器Squid架構配置

隨著網站訪問人數越來越多,承受的併發和壓力也越來越高,這時候我們需要對網站和架構進行優化,今天我們來討論使用Squid對架構進行優化,快取網站。網上對squid描述的文章也有成千上萬,我這裡簡單記錄一下實踐的步驟。 一、實施環境 系統版本:CentOSx86_64 5.8S

高效能代理快取伺服器Squid

Squid是什麼? Squid是一款比較知名的開源代理快取軟體,它不僅可以跑在linux上還可以跑在windows以及Unix上,它的技術已經非常成熟。目前使用Squid的使用者也是十分廣泛的。 Squid與Linux下其它的代理軟體如Apache、Sock

高效能快取伺服器 nuster v2.0.4.18 釋出

   nuster 是一個基於 HAProxy 的高效能 HTTP 快取伺服器和 RESTful NoSQL 快取伺服器,既可以用作類似 Varnish 或者 Nginx 那樣的 HTTP 快取伺服器,來快取動態或者靜態的 HTTP 資源,也可以用作 RESTful NoSQL

高效能Redis快取伺服器-redis.conf檔案配置埠號、授權IP、Redis後臺啟動、Redis日誌、Redis密碼

Redis的強大功能依賴於Redis的配置檔案,比如密碼驗證,授權機器訪問,埠號配置,叢集配置等,我們可以通過配置檔案非常方便的對Redis進行配置。Redis的核心配置檔案只有一個,就是redis.conf。在發行包中就有提供。在啟動Redis伺服器的時候我們可以通過redis-server

啟動伺服器時將配置引數從資料庫中載入到快取

最近做專案,碰到這樣的需求:在伺服器啟動的時候從資料庫讀取引數,將引數儲存到記憶體快取中 由於使用的是spring的自動注入方式,一開始用@component註解在啟動的時候載入查詢配置引數的bean,由於bean中要用到其他bean來查詢,但此時都為null 查詢相關資料,發現@PostC

高效能Redis快取伺服器-單節點環境搭建

Redis是一個高效能的快取伺服器,它能夠支援多種資料型別的快取,定義了非常簡約的通訊協議,多種程式語言都有對應的客戶端支援。Redis使用非常便捷,在應用中也被大量的使用。下面我們來在linux下部署一個單節點的Redis服務。 1. 從官網下載redis的安裝包,下載地址為 redi

高效能Redis快取伺服器單節點環境搭建

Redis是一個高效能的快取伺服器,它能夠支援多種資料型別的快取,定義了非常簡約的通訊協議,多種程式語言都有對應的客戶端支援。Redis使用非常便捷,在應用中也被大量的使用。下面我們來在linux下部署一個單節點的Redis服務。 1. 從官網下載redis的安裝包,下載地

高效能Redis快取伺服器-redis.conf檔案

Redis的強大功能依賴於Redis的配置檔案,比如密碼驗證,授權機器訪問,埠號配置,叢集配置等,我們可以通過配置檔案非常方便的對Redis進行配置。Redis的核心配置檔案只有一個,就是redis.conf。在發行包中就有提供。在啟動Redis伺服器的時候我們可以通過red

伺服器架構配置keepalived 雙機熱備

下載wget http://keepalived.org/software/keepalived-2.0.6.tar.gz mkdir /usr/local/keepalived/ tar -zxvf keepalived-2.0.6.tar.gz -C /usr/local/keepa

Linux伺服器---squid快取

Squid快取 代理伺服器會在本地硬碟設定快取,這樣可以提高網路效率 1修改squid配置檔案“/etc/squid/squid.conf”,引數“cache_dir_ufs”就是設定快取目錄的  [[email protected] wj]#gedit

Nginx配置快取伺服器快取清除

環境介紹:當前系統Centos7.5,nginx版本1.14.0,ngx_cache_purge(清理nginx快取的一個外掛)模組版本2.3,當前IP192.168.50.101 1、下載解壓ngx_cache_purge模組 cd /usr/local/src wg

linux 下的Squid 代理快取伺服器

        Squid是一個高效能的代理快取伺服器,Squid支援FTP、gopher、HTTPS和HTTP協議。和一般的代理快取軟體不同,Squid用一個單獨的、非模組化的、I/O驅動的程序來處理所有的客戶端請求。 &nbs

代理s3的nginx快取伺服器配置

需求: 實現: http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remot

在CentOS7上部署squid快取伺服器及代理功能

快取代理概述: 作為應用層的代理服務軟體,squid主要提供快取加速和應用層過濾控制的功能。 代理的基本型別: 傳統代理:也就是普通的代理服務,首先必須在客戶機的瀏覽器、聊天工具、下載軟體等程式中手動設定代理伺服器的地址和埠,然後才能使用代理服務來訪問網路。對於網頁瀏覽

Squid(代理快取伺服器)

1.插話 Squid是什麼? Squid是一種用來緩衝Internet資料的軟體。它是這樣實現其功能的,接受來自人們需要下載的目標(object)的請求並適當地處理這些請求。也就是說,如

高效能的分散式記憶體快取伺服器系統——memcached核心原理詳細剖析

memcached是什麼? 許多Web應用都將資料儲存到RDBMS中,應用伺服器從中讀取資料並在瀏覽器中顯示。 但隨著資料量的增大、訪問的集中,就會出現RDBMS的負擔加重、資料庫響應惡化、 網站顯示延遲等重大影響。 這時就該memcached

squid代理快取伺服器

[[email protected] ~]# yum install squid -y    ####下載軟體 [[email protected] ~]# systemctl start squid                ####開啟squid服務 [[email pr

程式設計方式重新整理Squid快取伺服器的五種方法

網站進行內容更新是常有的事情,當被快取的資源更新時,前端Squid 快取伺服器內容也必須要相應的更新,否則使用者就可能會看到過期的資料。當沒有程式支援時就需要每次登入到伺服器上執行重新整理操作,在伺服器數量小的的時候這種方式還可行,如果伺服器數量上了一定的規模,這就是一種非常

高效能高併發網站架構,教你搭建Redis5快取叢集

一、Redis叢集介紹 Redis真的是一個優秀的技術,它是一種key-value形式的NoSQL記憶體資料庫,由ANSI C編寫,遵守BSD協議、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。 Redis最大的特性是它會將所有資料都放在記憶體中,所以讀寫速度效

50臺集群架構配置介紹-2(備份服務器Rsync)

50臺集群架構配置介紹-2(備份服務器rsync)在企業裡面首先會先需要備份服務器,來備份數據,以防丟失。在此,我們在這裡介紹Rsync服務器(實現本地拷貝以及遠程拷貝) 介紹:Rsync 開源、快速、可實現全量(全部備份)及增量(差異式備份)的本地或遠程的數據同步。適用於Unix,Linux,Windows