第十七章 apache 性能调优
前言
本文檔基于對apache的學習整理而成的筆記。本文檔詳細的記錄了apache各種應用,以及一些個人的理解,如果偏差,請和我聯系,以在下一個版本中進行更正。其中大部分文檔均來自網絡,感謝網絡上各位朋友的分享,才有此文檔的出現。其中本人對參考的部分網絡文檔進行適當的修改,以達到更好的參考效果。也希望各位積極的分享文檔,為開源事業做出自己力所能及的貢獻。
?????????????????????????????????????????????itnihao??2012年10月04日于成都
第十七章?apache?性能調優
17.1對程序本身的優化
???在GCC的默認情況下,大多數程序和庫都是帶調試符號(默認使用GCC的-g選項)編譯的,Apache也不例外,這些調試符通常只在調試程序的時候使用,它不但能給出內存地址,還能給出變量和函數名稱。但是這對生產服務器來說是不必要的,因為沒有人在服務器上調試Apache.而且因為調試符號的存在,Apache在運行的時候會占用更多的內存,雖然數量不大,但是如果大量的Apache進程運行,內容累積起來,也不是一個小數目
[root@localhost?~]#?ls?/usr/local/apache/bin/httpd??-l
-rwxr-xr-x.?1?root?root?1879241?Aug?22?19:31?/usr/local/apache/bin/httpd
[root@localhost?~]#?strip?/usr/local/apache/bin/httpd
[root@localhost?~]#?ls?/usr/local/apache/bin/httpd??-l???
-rwxr-xr-x.?1?root?root?564968?Oct??3?00:45?/usr/local/apache/bin/httpd?
此處可以看到清除調試符后的體積只有原先的30%,具體視情況而定
17.2?Apache的監控模塊mod_status
Mod_status可以監控的對象
當前工作的進程數量
空閑的進程數量
服務器已經運行的時間
當前正在連接的主機的請求
單個進程的CPU使用率和Apache當前CPU使用的百分比
每秒平均請求量,每秒發送字節數,每個請求發送字節數
修改配置文件httpd.conf
LoadModule?status_module?modules/mod_status.so
添加監控內容
<location?/server-status>
????SetHandler?server-status
????Order?Deny,Allow
??????????Deny?from?all
??????????Allow?from?127.0.0.1?192.168.16.90
</location>
ExtendedStatus??On
http://192.168.16.30/server-status???????????訪問監控頁面
http://192.168.16.30/server-status?refresh=1??1秒刷新一次
http://192.168.16.30/server-status?notable????不支持表格的瀏覽器,使用此參數
http://192.168.16.30/server-status?auto???????提供易讀的報告
http://192.168.16.30/server-status?auto?refresh=1?易讀的報告,每秒刷新一次
17.3運用cacti監控apache
APACHE端安安裝配置snmp
com2sec?mynetwork?127.0.0.1?public
com2sec?mynetwork?192.168.16.254?public??#cacti監控機為192.168.16.254
group?MyROGroup?v2c?mynetwork
view?all?included?.1?80
access?MyROGroup?""?any?noauth?prefix?all?none?non
cacti添加主機
模板下載地址http://forums.cacti.net/about25227.html&highlight=apachestats?
添加默認模板,方便以后所有主機添加該模板
?
注意,apache端需要允許cacti監控,即?Allow?from?127.0.0.1?192.168.16.90
17.4?mod_info的使用
Httpd.conf開啟該模塊,去掉注釋
LoadModule?info_module?modules/mod_info.so
添加以下模塊
<location?/server-info>
SetHandler?server-info
????Order?Deny,Allow??????????
????Deny?from?all??????????
????Allow?from?127.0.0.1?192.168.16.90?192.168.16.254
</location>
17.5?.htaccess文件的調優
在Apache中,通常都是在httpd.conf文件中完成對服務器的配置,但是對于一些管理員來說,更簡單更精細化的控制目錄可以更有用。
AccessFileName??.config??指定.htaccess文件名為.config
調用參數?AllowOverride??選項
All?????????使用所有能在.htaccess文件中使用的指令
AuthConfig??使用授權指令,如AuthName?AuthType
Fileinfo?????使用控制文件類型的指令,如ErrorDocument,SetoutputFilter
Indexes?????使用目錄索引指令
Options?????使用控制目錄功能指令
Limit???????使用主機訪問控制指令
例如,啟動.htaccess文件功能,并讓htaccess文件支持目錄索引指令
AllowOverride??Indexes
例如在/var/www/html/web目錄下的.htaccess中寫入下面的內容后,該目錄就可以支持CGI了
Option??+EsecCGI
AddHandler?cgi-script??cgi??pl
使用.htaccess好處
可以隨時對目錄功能和權限進行控制
二是寫入.htaccess文件后無需重啟Apache服務
??雖然.htaccess有如此多的優點,但它存在的缺點會導致服務器性能的急速下降,這是因為使用看了AllowOerride指令允許使用.htaccess文件后,無論是否使用.htaccess文件,Apache都會在每個目錄下面查找.htaccess文件,其次,當每個請求鏈接到來時,Apache會查找鏈接所請求目錄下面的.htaccess文件,并且查找它的上級目錄中的.Htaccess文件以使。Htaccess文件內的設置都能生效;另外還存在安全問題,.Htaccess文件可以修改和覆蓋服務器的指令。
??解決辦法:
?????在<Directory>容器中使用AllowOverride指令開啟。另外嚴格制定執行,目錄,盡量不用ALL參數來啟動所有指令
17.6?模塊加載的調優
DSO中模塊的加載順序:
???DSO模塊裝入順序決定了Apache使用它們處理URL的順序,DSO模塊總是以最后裝入的模塊為優先進行處理,而第一個裝入的模塊則是在最后一個被處理
例如:
LoadModule?alias_module?modules/mod_alias.so
LoadModule?rewrite_module?modules/mod_rewrite.so
mod_rewrite模塊會在mod_alias之前處理請求的URL。因此,可以通過調整加載順序來改變執行的優先級,但此問題在2.X版本中表現不是很明顯。
17.7?Apache所提供的性能調優指令
KeepAlive:????????通過“on”與“off”開關來設置是否使用HTTP持久連接
MaxKeepaliveRequest?一個持久連接中允許的最大請求數量,默認為100,推薦設置更大
KeepaliveTimeout????設置持久連接中服務器在兩次請求之間等待的秒數,默認為5秒,對于高負荷服務器來說,KeepaliveTimeout值較大會導致一些性能問題,超時值越大,與空閑客戶端保持連接的進程就越多。因此,用戶需要測試一下自己的系統再決定這個值的大小
MaxKeepaliveRequest?在啟用了持久連接后每個連接允許的請求數量,如果將此值設為0,則不進行限制。推薦將它設置得更大一些。
本文轉自it你好 51CTO博客,原文鏈接:http://blog.51cto.com/itnihao/1012166,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的第十七章 apache 性能调优的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android UI设计与开发】7.底
- 下一篇: 【狂人小白】如何将Java项目发布到Ma