varnish緩衝503錯誤,400錯誤的原因和解決方案

來源:互聯網
上載者:User

生產環境中嘗試使用varnish替代squid的主要原因:

1.  squid不支援多核cpu, 生產環境中大多使用Dell R610系列,這種類型機器配置為2個4核雙線程cpu, 作業系統識別為16個,對squid來說,只能利用到一個邏輯cpu, 其它15個邏輯cpu相當於一直浪費。

2.  squid無法批量清除緩衝

3.  squid3.0目前還無法支援http 1.1, 這對一些管理調整(如gzip壓縮,cache-control)帶來不必要的麻煩

4.  目前我還未找到squid的grace模式(指來源站點不可到達時,繼續使用到期緩衝為使用者提供服務),而varnish是完全支援的。

5.  經過生產環境數個月反覆測試,同樣訪問量情況下,varnish消耗的更少,也沒有出現過崩潰情況,而squid因為不支援多核,導致Dell R610機器負載往往超過4,但使用varnish後,機器負載從來沒超過1.5

經過反覆測試,我們已經開始在日獨立IP百萬級網站中使用varnish替換squid了。

但這個過程中,充滿太多未知情況,目前我們所遇到的關鍵問題下:

1. 高流量情況下iptables丟包
ip_conntrack: table full, dropping packet.
按網上常規方法,只修改/etc/sysctl.conf是無效的

需要以下兩步,方可解決:
/boot/grub/grub.conf kernel行中增加參數
ip_conntrack.hashsize=524288
/etc/sysctl.conf中增加
net.ipv4.netfilter.ip_conntrack_max = 2097152

注意,上面的操作需要重啟機器

2. 登入shell ulimit的預設值
/etc/security/limits.conf中加入
* soft nofile 655360
* hard nofile 655360
預設的檔案描述符限制為1024, 太小,即使調整成65536,對高負載機器也可能不夠,故設定為655360,但也要注意,這個值不能設定過大,否則會導致shell無法登入。

修改/etc/security/limits.conf後,只對登入shell有效。對開機啟動並執行程式,一定要注意這個問題(在啟動前設定ulimit)
 
shell級的資源限制來自於/etc/security/limits.conf,那麼系統級的資源限制可在哪裡修改? 

3. squid換為varnish後流量增加的解決方案:
/etc/security/limits.conf中加入
* soft memlock 1048576
* soft memlock 1048576
或執行 ulimit -HSl 1048576
預設的memlock 只有32K,對varnish來說,太小太小。varnish使用記憶體塊儲存日誌,故這個值需要調大一些。
上面的值將其調整為1G,即可解決varnish流量高於squid的問題

4. varnish運行中頻繁出現503錯誤,400錯誤

出現503錯誤這是因為varnish對後端伺服器響應header有限制,預設長度是2048,可將其調大一些
-p http_resp_hdr_len=8192

再重啟即可解決503錯誤。

出現400錯誤是因為varnish認為用戶端請求header行數及長度過大,其預設最大接受的請求header行數為64,最大長度(所有請求header行長度之和)為2048,解決這個問題比較簡單,在varnish啟動參數中加入:
-p http_max_hdr=256
-p http_req_hdr_len=8192

再重啟varnish, 即可解決其400錯誤

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.