2012-12-02

Ubuntu 啟用 Apache HTTP Server 的 mod_status 模組

阿舍有一個 Ubuntu 虛擬機器裡的 Apache Server 的反應時間異常的長,阿舍試了幾個方式都沒有改善哩 ! 所以,就想找找看,有沒有什麼 Apache 的效能調校工具可用,可是,找了老半天,都只找到一些介紹如何調校和最佳化 Apache 的文章,倒是沒看到什麼好用的工具哩 ! 不過,有看到不少人提到 Apache 的 mod_status 可以看到一些效能的資訊,因此,阿舍就來研究一下哩 !

mod_status 的簡單報告
不過,阿舍試了之後,是有點小小的失望,因為,出現的訊息雖然還滿實用的,但是,就如上面看到的這張圖一樣,畫面有些簡陋哩 ! 算是十分直接了當的報表哩 ! 可是,所提供的資訊對於要做效能調校的人及網站效能監控的人來說,應該是滿有幫助的吧 ! mod_status 有提供給程式讀取用的資料,可以透過程式來即時取得監測的資訊,所以,管理人員只要透過簡單的程式,就可以自行來做監控哩 ! 稍後會有說明的 ...

阿舍用這個方式安裝的 Apache,預設就已經有啟用 mod_status 了,如果不確定你的 Apache 有沒有啟用過 mod_status 模組的話,可以看一下/etc/apache2/mods-enabled 資料夾,裡面如果沒有 status.conf 和 status.load 這二個檔案的話,那就是還沒有啟用過哩 ! 那就要用下面的指令來啟用 mod_status 囉 !

sudo a2enmod status

確定 mod_status 模組有啟用後,接下來,要先設定一個可以開啟由 mod_status 產生的狀態報告的網址,請在 /etc/apache2/apache2.conf 或 /etc/apache2/sites-available/default 檔案擇一加入下面這幾行,其中的 「/httpd-status」是網址,可以改成任何你想要用的網址,而如果是放在  /etc/apache2/apache2.conf  裡的話,最後皂「Allow from localhost」的 localhost 可以改成是 IP 位址或網域名稱,是用來控制可以開啟狀態報告的網域的。

<Location httpd-status>
  SetHandler server-status 
  Order deny,allow 
  Deny from all 
  Allow from localhost 
</Location>

上面的項目都加好之後,請用下面這一行指令來重新啟動 Apache Server,啟動後,用「http://localhost/httpd-status」就可以開啟 mod_status 產生的狀態報告,如果要讓這個網頁可定時更新的話,可以在網址後面加入 「refresh=更新秒數」,以阿舍上的設定來說,就可以用 「http://localhost/httpd-status?refresh=10」來讓報表每 10 秒更新一次,就不用自己一直按 F5 哩 !

sudo service apache2 restart

另外,也可以網址後面加入「auto」( 例如,http://localhost/httpd-status?auto )  來取得如下圖的格式,這個是適合用程式來讀取和解析用,可以寫一支簡單的程式來定期抓資料,檢查一下 CPU 和下載量有沒有爆衝,還是 CPU 都一直在高檔下不來哩 ! 這樣做的話,可以簡簡單單的達到監控 Apache Server 效能的目的哩 !

這是有啟用 ExtendedStatus 的 Auto 報告
最後,要提一下的是,mod_status 模組有二項參數可以調,一個是 ExtendedStatus,另一個是 SeeRequestTail,第一個是用來要求 mod_status 對每一個 request 取得更多的資訊,而第二個則是要 ExtendedStatus 有啟用才會有作用的,是用來改變 mod_status 顯示在報表上的是每一個要求的前 63 個元或是最後算起的 63 個字元哩 !

這是啟用 ExtendedStatus 後的報舑畫面
ExtendedStatus 和 SeeRequestTail 參數無法在虛擬主機使用,所以,需要設定在 /etc/apache2/apache2.conf 檔案裡,而設定方法是在 /etc/apache2/apache2.conf 檔案加入下面這二行後重啟 Apache Server,不過,啟用後會影響一些效能的。

ExtendedStatus  On
SeeRequestTail  On

參考資料:

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁