日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

lighttpd 负载均衡-反向代理+cache浅谈

發布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lighttpd 负载均衡-反向代理+cache浅谈 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Lighttpd有硬盤級別的cache-(mod_cache)和內存級別的cache(mod_mem_cache),內存級別的cache是國人的產品,我喜歡用lighttpd就是因為它具有2種選擇的cache,像我的實際需求,由于系統存在很多圖片,但是容量不大,一般都少于40k,圖片,js,CSS等我都喜歡放到內存里面,畢竟磁盤i/o是一個真正的計算機瓶頸制造者,而一些其他資源cache就放到硬盤級別的cache

1) squid和modcache的對比:squid是個功能全面的系統、但效率不高;modcache是功能不多,但效率高的緩存系統;請求數不多的情況下 (<100 req/s),兩者差別不大;請求數超過100 req/s,modcache完勝
2) Linux系統的優化也很重要,比如打開最大文件數等等。不一定非要改linux kernel source,參數調優事半功倍
3)如何用盡多核CPU。首先要用多個進程(server.max-workers=4);用Linux的setaffinity系統調用把CPU0空閑出來,再根據服務情況選擇是否把緩存加載到內存中;最后就是給足夠大的負載了(大部分時候瓶頸在IO上,而不在CPU上)。
其實lighttpd在請求高(>1k req/s)的情況下,CPU也不忙,比Squid好太多;也就是說lighttpd不屬于CPU計算量大的程序,而大部分時間在處理、等待網絡IO,磁盤IO
4) keepalive 盡量關閉。lighttpd 1.4.23新加的server.defer-accept選項不錯,可設置成server.defer-accept=30
5) 小文件緩存到內存;大文件放硬盤,硬盤沒必要用raid
6) 加載 mod_status,設置 status.statistics-url = "/lighttpd_status"。然后訪問http://ip/lighttpd_status 可看到modcache 的緩存命中率
7) modcache 使用兩級hashmap管理內存緩存,效率不錯,支持上千萬的項目快速存取
8) 單進程和多線程。單進程適合現代的硬件和軟件;多線程的弱勢在于鎖:一般多線程使用多個全局鎖,當請求數量超過一定值后,全局鎖會導致性能急劇下降;多線程的擴展性比單進程差不少。
多線程適合不同線程做不同工作,或者請求數量可控、且不高的情況

?

以下是關鍵配置

#模塊的加載-------------------------------------------------------

server.modules??????????????=?(???

??????????????????????????????"mod_compress",
??????????????????????????????? "mod_access",
?????????????????????????????? "mod_status",
?????????????????????????????? "mod_mem_cache",? #memcache 內存級的cache
?????????????????????????????? "mod_cache",?????????? #disk cache 硬盤級別的cache
?????????????????????????????? "mod_proxy"

??#模塊的排序是有規則的,如果不合理排序,容易產生問題

#硬盤級別cache的設置----------------------------------------

#模塊參數說明:http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModCache

#mod_mem_cache作者的最新主頁:http://code.google.com/p/lighttpd-improved/

######## disk cache #########
cache.support-queries = "enable" #cache允許查詢?
cache.bases = ("/data/cache")?? #cache存放的根目錄
cache.refresh-pattern = ( #以下是允許cache的文件類型以及cache的有效期,單位:分)
??????? "/.(?i)(flv)$" => "0 fetchall-for-range-request flv-streaming",
??????? "/.(?i)(js|css|xml)$" => "240", # update js/css/xml every 4 hours
??????? "/.(?i)(htm|html|shtml)$" => "30 update-on-refresh", #update html/htm/shtml every 30 minutes and on refresh requests
??????? "/.(?i)(jpg|bmp|jpeg|gif|png)$" => "2880",
??????? "/.(?i)(rar|zip|wmv|avi|mp3|ape|rm|mpeg|mpg|wma|asf|rmvb|flv)$" => "0 fetchall-for-range-request",
??????? "." => "30 update-on-refresh"
)

#內存級別的cache設置-----------------------------------------------

#模塊詳細參數說明:http://redmine.lighttpd.net/wiki/1/Docs:ModMemCache
######## memory cache ###############
mem-cache.enable = "enable"
mem-cache.filetypes = ("application/x-javascript", "text/css","text/javascript","image/jpeg","image/gif","image/png")??? #定義內存cache的文件類型
mem-cache.max-memory = 64????????????????????????????????????? #允許使用的最大內存大少,單位:M
mem-cache.max-file-size = 1024?????????????????????????????????? #單個文件大小?,單位:KB
mem-cache.expire-time = 180?????????????????????????????????????? #過期時間,默認單位:分

#調度目標的web-server列表

proxy.server? = ( "/" =>
??????? (
? ?????????????? ( "host" => "192.168.10.1","port" => 80)

?????????????????? ( "host" => "192.168.10.2","port" => 80)

??????????????????? ( "host" => "192.168.10.3","port" => 80)

)
)

?

結果測試:用iE裝了httpwatch后抓包查看,首先第一次訪問proxy_cache后,關掉,接著清空本地cookies,再次打開,速度是幾何級別的提升,頁面一下子刷出來了,查看http_header時,發現如下關鍵字:

#硬盤cache的命中

(Status-Line)?HTTP/1.1 200 OK
Accept-Ranges?bytes
Cache-Control?max-age=13873
Content-Length?2974
Content-Type?application/x-javascript
Date?Thu, 22 Jul 2010 11:26:54 GMT
ETag?"0f3b8da1939ca1:4aa7"
Expires?Thu, 22 Jul 2010 15:18:07 GMT
Last-Modified?Sat, 19 Sep 2009 11:10:54 GMT
Server?lighttpd/1.4.26
X-Cache?HIT??????? #命中緩存
X-Powered-By?ASP.NET

#內存cache的命中

(Status-Line)?HTTP/1.1 200 OK
Cache-Control?max-age=172721
Content-Length?13952
Content-Location?http://192.168.3.120/uploads/userup/2192/myface.jpg?#我的proxy_cache地址
Content-Type?image/jpeg
Date?Thu, 22 Jul 2010 11:19:29 GMT
ETag?"22bc68d74227cb1:4e86"
Expires?Sat, 24 Jul 2010 11:18:10 GMT
Last-Modified?Mon, 19 Jul 2010 13:03:54 GMT
Server?lighttpd/1.4.26
X-Cache?TO MEMCACHE?? #命中內存
X-Powered-By?ASP.NET

小結:這只是一般情況下的案例測試,具體需要涉及實際情況,例如php動態文件,媒體文件等的cache,還有圖片網站或者視頻網站等設置cache內容,過期時間等均要不同設置才能做到最大限度優化,不能一視同仁。

總結

以上是生活随笔為你收集整理的lighttpd 负载均衡-反向代理+cache浅谈的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。