一、mod_deflate模塊javascript
網站隨着用戶訪問量的增長和內容量的增長,網站的帶寬會不斷的增長,隨之就是網站成本的增長。而且當內容量增大的時候,客戶端若是帶寬小,就會影響用戶的體驗。所以從這兩方面考慮,網站的某些內容必須通過壓縮以後再傳給用戶,而後在用戶客戶端進行解壓,來實現雙方雙贏的效果。php
apache的壓縮要用到mod_deflate模塊,該模塊提供了DEFLATE輸出過濾器,容許服務器在將輸出內容發送到客戶端之前進行壓縮,以節約帶寬。它的核心思想就是把文件先在服務器進行壓縮,而後再進行傳輸,這樣能夠顯著減小文件傳輸的大小。當傳輸完畢後,客戶端遊覽器會從新對壓縮過的內容進行解壓縮。若是沒特殊狀況的話,因此的文本內容都應該能被gzip壓縮,例如:html(php),js,css,xml,txt等。特殊狀況就是像一些首頁上有不少廣告投放的js代碼,因爲須要每次加載進而進行來訪信息統計,因此這些廣告代碼擁有者網站的js不會通過gzip壓縮,css
使用mod_deflate模塊壓縮頁面優化傳輸速度html
能夠寫爲一行,也能夠寫多行,默認爲gzipjava
適用場景:web
1)節約帶寬,額外消耗CPU,可能有些較老瀏覽器不支持數據庫
2)壓縮適於壓縮的資源,例如文本文件,圖片壓縮比很小,沒有壓縮意義 apache
[root@Node4 ~]# httpd -M|grep deflate #默認已啓動了該模塊 deflate_module (shared) Syntax OK
設置壓縮的格式:瀏覽器
爲了管理方即可以把此配置寫在conf.d/deflate.conf中
緩存
SetOutputFilter DEFLATE #啓動輸出過濾器DEFLATE # mod_deflate configuration <IfModule mod_deflate.c> # Restrict compression to these MIME types #僅壓縮下面MIME類型的文件 AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/css #DeflateFilterNote Input instream #聲明輸入流的byte數量 #DeflateFilterNote Output outstream #聲明輸出流的byte數量 #DeflateFilterNote Ratio ratio #在日誌中放置壓縮率標記,下面是記錄日誌的,這個功能通常不用 #LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate #設置日誌格式 #CustomLog logs/deflate_log.log deflate #定義日誌 # Level of compression (Highest 9 - Lowest 1) #默認爲6 DeflateCompressionLevel 9 #壓縮比,壓縮比越高消耗的CPU也越高 # Netscape 4.x has some problems. BrowserMatch ^Mozilla/4 gzip-only-text/html #Mozilla瀏覽器僅壓縮text/html類型 # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip #瀏覽器爲 不壓縮 # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html </IfModule>
注意:
並非全部的瀏覽器都支持頁面壓縮格式,不支持時,會提示下載
二、httpd相關的工具程序
htpasswd:basic認證基於文件實現時,用到的賬號密碼文件生成工具
htdigest:爲柴窯認證建立和更新用戶認證文件
htdbm:操做DBM密碼數據庫
dbmmanage:爲基本認證建立和更新DBM格式的用戶認證文件
apachectl:httpd自帶的服務控制腳本,支持start,stop
apxs:由httpd-devel包提供的,擴展httpd使用第三方模塊的工具
htcacheclean:清理磁盤緩存
logresolve:將Apache日誌文件中的Ip地址解析到主機名稱
rotatelogs:日誌滾動工具,不關閉Apache而切換日誌文件,
suexec:訪問某些有特殊權限配置的資源時,臨時切換至指定用戶運行
ab:apache benchmark 基準性能測試工具
使用格式:
ab [options] URL
-n:總的請求數
-c:模擬的併發數
-k:以持久鏈接模式測試
通常併發數應該小於等於請求數
[root@Node4 ~]# ab -c 100 -n 5000 http://www.a.com/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking www.a.com (be patient) Completed 500 requests Completed 1000 requests Completed 1500 requests Completed 2000 requests Completed 2500 requests Completed 3000 requests Completed 3500 requests Completed 4000 requests Completed 4500 requests Completed 5000 requests Finished 5000 requests Server Software: Apache/2.2.15 Server Hostname: www.a.com Server Port: 80 Document Path: / Document Length: 19 bytes Concurrency Level: 100 #併發級別 Time taken for tests: 1.544 seconds #測試所經歷的時長 Complete requests: 5000 #完成的請求 Failed requests: 0 Write errors: 0 Total transferred: 1554888 bytes #總傳輸的大小,包含了報文的首部大小 HTML transferred: 95608 bytes #總傳輸的html文檔的大小,只包含實體的大小 Requests per second: 3237.42 [#/sec] (mean) #每秒完成的請求個數, Time per request: 30.889 [ms] (mean) #每批(併發數)請求所消耗的時長,以100個一批,按批平均 Time per request: 0.309 [ms] (mean, across all concurrent requests) #每一個請求所消耗的時長 Transfer rate: 983.17 [Kbytes/sec] received #每秒輸出的字節數 Connection Times (ms) min mean[+/-sd] median max Connect: 0 14 5.1 14 30 Processing: 4 17 4.7 16 37 Waiting: 0 14 3.7 13 29 Total: 4 31 4.9 30 52 Percentage of the requests served within a certain time (ms) 50% 30 66% 32 75% 33 80% 34 90% 37 95% 40 98% 44 99% 45 100% 52 (longest request) [root@Node4 ~]#
注意:
測試時,應該再使用瀏覽器看是否能訪問測試的頁面
ab測試只測試了一個頁面
ab測試並不精確,只作參考
web服務器壓力測試工具還有不少個:
webbench
http_load
seige
tcp_copy 能複製真實的流量並重放