linux檔案描述符導致squid拒絕服務

來源:互聯網
上載者:User
轉載:http://kerry.blog.51cto.com/172631/300757(很好的blog)

linux檔案描述符導致squid拒絕服務 前幾天因工作需要在RHEL4.8上面架設了一個squid雙網代理,剛開始測試一切正常,然後就在前台負載平衡伺服器把這個Proxy 位址加上,運行一段時間後,客服反映有一些玩家無法進入遊戲房間,通過cacti監控發現大量的失敗串連,正常的串連只有900多   初步判斷為linux核心限制了串連數,通過google一下發現linux預設檔案描述符只有1024個,對於squid等一些服務來說,在大負載的情況下這點檔案描述符是遠遠不夠的,因為squid
的工作方式,檔案描述符的限制可能會極大的影響效能。當squid 用完所有的檔案描述符後,它不能接收使用者新的串連。也就是說,用完檔案描述符導致拒絕服務。直到一部分當前請求完成,相應的檔案和socket
被關閉,squid 不能接收新請求,這樣就要擴大linux的檔案描述符了一,通過ulimit命令修改 //顯示當前檔案描述符ulimit -n //修改目前使用者環境下的檔案描述符為65536ulimit -HSn 65536 echo "ulimit -HSn 65536" >> /etcrc.local 使用ulimit命令的缺點: 1,只能修改當前登入使用者環境下的檔案描述符,如果此使用者來另外開啟一個串連,此連結環境的檔案描述符依然是沒改前的2,如果系統重啟,以前修改都不再生效 二,通過修改limits.conf檔案 編輯/etc/security/limits.conf
檔案,在最後加入如下兩行 *                               soft    nofile  65536*                               hard    nofile  65536 儲存退出,都不需要重啟伺服器,直接重新登陸用ulimit -n就能看到效果 這樣無論使用哪個使用者,無論是否重啟都不會失效了。 擴大linux的檔案描述符後,再重新編譯安裝squid,安裝完成後,重新啟用此代理,發現串連數馬上就上來了     Linux下squid編譯安裝groupadd squiduseradd -g squid -s /sbin/nologin squidmkdir -p /cache/{cache,logs}ulimit -HSn 65536 //開啟檔案數為65536 #squid 2.6tar - xzvf squid-2.6.STABLE9.tar.gz cd squid-2.6.STABLE9 ./configure --prefix=/usr/local/squid --enable-snmp --enable-storeio=diskd,ufs --enable-poll--disable-hostname-checks --enable-underscores --enable-x-accelerator-vary--enable-kill-parent-hack --enable-err-language="Simplify_Chinese"--enable-default-err-languages="Simplify_Chinese" --disable-ident-lookups--with-maxfd=65535;make;make install;--prefix=/usr/local/squid :指定軟體的安裝路徑.--enable-snmp :此選項可以讓MRTG使用SNMP協議對伺服器的流量狀態進行監測,因此必須選擇此項,使Squid支援SNMP介面。--enable-storeio=diskd,ufs :磁碟ache的模式.--enable-poll :應啟用Poll()函數而不是select()函數,通常而言poll(輪詢)比select要好,但configure(指令碼程式)已知Poll在某些平台下失效,
若你認為你比configure編譯配置指令碼程式要聰明的話,可以用這個選項啟用Poll。總之就是用這個可以提升效能就是啦。--disable-hostname-checks :關閉hostname檢查;以提高速度.--enable-underscore :允許解析的URL中出現下劃先,因為預設squid會認為帶底線的URL地址是非法的,並拒絕訪問該地址。--enable-x-accelerator-vary :Enable support for the X-Accelerator-VaryHTTP header. Can be used to indicatevariance within an accelerator setup.Typically used together with other codethat adds custom HTTP headers to the requests.--enable-kill-parent-hack :關掉suqid的時候,要不要連同父進程一起關掉.--enable-err-language="Simplify_Chinese"
和--enable-default-err-languages="Simplify_Chinese" :指定出錯是顯示的錯誤頁面為簡體中文.--disable-ident-lookups :防止系統使用RFC931規定的身份識別方法。 --enable-cahce-digests :加快請求時,檢索緩衝內容的速度。(在squid叢集時才有用)--enable-linux-netfilter :可以支援透明代理for linux2.4.--enable-arp-acl :可以在規則設定中直接通過用戶端的MAC地址進行管理,防止客戶使用IP欺騙。(和上一行配合用;只有反向 Proxy時沒用).--with-maxfd=65535 //開啟檔案數為65536 #squid 3.0tar -zxvf squid-3.0.STABLE7.tar.gzcd squid-3.0.STABLE7./configure --prefix=/usr/local/squid --enable-gnuregex --enable-arp-acl --enable-auth="basic" --enable-basic-auth-helpers="NCSA" --enable-async-io=80 --enable-storeio=ufs --enable-icmp --enable-kill-parent-hack
--enable-snmp --disable-ident-lookups --enable-cache-digests --enable-ssl --enable-delay-pools --enable-poll --enable-linux-netfilter --enable-underscore --enable-err-language="Simplify_Chinese" --enable-default-err-languages="Simplify_Chinese" 解釋說明:--prefix=/usr/local/squid //指定安裝路徑--enable-arp-acl //這樣可以在規則設定中直接通過用戶端的MAC地址進行管理,防止客戶使用IP欺騙--enable-async-io=80 //這個主要是設定async模式來運行squid,我的理解是設定用線程來運行squid,如果伺服器配置很不錯,有1G以上記憶體,cpu使用SMP的方式的話可以考慮設成160或者更高。如果伺服器比較糟糕就根據實際情況設了。另外此項還另cache檔案支援aufs
--enable-auth-modules //此編譯選項啟用認證模組,可以對訪問代理使用者進行授權。--enable-cache-digests //使能緩衝摘要,本來此項目的是為了在Squid叢集服務之間迅速發現緩衝對象,這裡在本地使用,可以加快請求時,檢索緩衝內容的速度。--enable-err-language="Simplify_Chinese"
和--enable-default-err-languages="Simplify_Chinese" //指定出錯是顯示的錯誤頁面為簡體中文--enable-delay-pools //此選項使能一個延時池,這樣能對某些特定的要求節流額定頻寬。--enable-gnuregex //由於Squid大量使用字串處理做各種判斷,加此項能更好處理。--enable-icmp //加入icmp支援--disable-ident-lookups //防止系統使用RFC931規定的身份識別方法。--enable-kill-parent-hack //關掉suqid的時候,要不要連同父進程一起關掉,這個當然要啦--enable-linux-netfilter //允許使用Linux的透明代理功能。--enable-poll //應啟用Poll()函數而不是select()函數,通常而言poll(輪詢)比select要好,但configure(指令碼程式)已知Poll在某些平台下失效,
若你認為你比configure編譯配置指令碼程式要聰明的話,可以用這個選項啟用Poll。總之就是用這個可以提升效能就是啦。--enable-snmp //此選項可以讓MRTG使用SNMP協議對伺服器的流量狀態進行監測,因此必須選擇此項,使Squid支援SNMP介面。--enable-storeio=ufs,null //使用的檔案系統通常是預設的ufs,不過如果想要做一個不緩衝任何檔案的Proxy 伺服器,就需要加上null檔案系統。--enable-underscore //允許解析的URL中出現下劃先,因為預設squid會認為帶底線的URL地址是非法的,並拒絕訪問該地址。  Make;make install chown -R squid.squid /cache/cachechown -R squid.squid /cache/logs vi /usr/local/squid/etc/squid.confvisible_hostname squid17 http_port 8008http_port 80 cache_mgr kerryhu@163.com cache_mem 1024 MB maximum_object_size_in_memory 10 MB memory_replacement_policy lru cache_replacement_policy lru cache_dir ufs /cache/cache 8000 32 128 max_open_disk_fds 0 maximum_object_size 300 MB cache_swap_low 90cache_swap_high 95 http_access allow all  #logs access_log none cache_log /cache/logs/cache.log cache_store_log none error_directory  /usr/local/squid/share/errors/Simplify_Chinese   /usr/local/squid/sbin/squid -z      //測試Squid健全狀態/usr/local/squid/sbin/squid start   //啟動squid Echo “/usr/local/squid/sbin/squid start”  >> /etc/rc.local /usr/local/squid/sbin/squid -k reconfigure –f /usr/local/squid/etc/squid.conf   //重新載入設定檔

本文出自 “聆聽未來” 部落格,請務必保留此出處http://kerry.blog.51cto.com/172631/300757

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.