作者 主題: Apache CPU 使用率 100%  (閱讀 6138 次)

0 會員 與 1 訪客 正在閱讀本文。

babiku

  • 可愛的小學生
  • *
  • 文章數: 9
    • 檢視個人資料
Apache CPU 使用率 100%
« 於: 2007-12-11 10:53 »
各位學長好,
小弟有五台 RHEL 2 的 Server, 今年我們重新編了 httpd 2.2.4, 上線之後 CPU 卻一直在 100% 的使用量, 請問有什麼方式可以改善嗎?

在我們的 error_log 之下, 幾乎都會有如下的錯誤:


... same as below
[Mon Dec 10 10:08:36 2007] [error] Optional hook test said: GET /ds/gd/common/js/Util.js HTTP/1.1
[Mon Dec 10 10:08:37 2007] [error] Optional hook test said: GET /ds/gd/common/js/_check.js HTTP/1.1
[Mon Dec 10 10:08:37 2007] [error] Optional hook test said: GET /ds/gd/version/js/funcs.js HTTP/1.1
[Mon Dec 10 10:08:37 2007] [error] Optional hook test said: GET /ds/adbook/xml/cc0/0/1/82/82600.xml HTTP/1.1
[Mon Dec 10 10:08:37 2007] [error] Optional hook test said: GET /ds/gd/common/js/check.js HTTP/1.1
[Mon Dec 10 10:08:37 2007] [error] Optional hook test said: GET /ds/gd/version/profiles/global_system/sp0001.xml HTTP/1.1
[Mon Dec 10 10:08:37 2007] [error] Optional hook test said: GET /ds/gd/version/profiles/global_system/sp0001.xml HTTP/1.1
[Mon Dec 10 10:08:37 2007] [error] Optional hook test said: GET /ds/gd/version/profiles/global_system/sp0001.xml HTTP/1.1
[Mon Dec 10 10:08:37 2007] [error] Optional hook test said: GET /ds/adbook/xml/cc0/0/1/87/87900.xml HTTP/1.1
... same as above


我們的架構為:

        LB
       /    \
      Web   Web
         \  /
        Tomcat (4.1.21)
          |
      MySQL Cluster
         /     \
    Master     Slave



版本如下:
* Apache/2.2.4 (Unix) mod_ssl/2.2.4 OpenSSL/0.9.6b mod_jk2/2.0.4
* Tomcat 4.1.21-LE-jdk14
* connector 2.0.4

硬體和 OS 資訊:
OS: Redhat Linux Enterprise 2
CPU: Itanium 2 * 2
RAM: 2048 MB

我們使用了 Itanium 64 的雙 CPU 主機, 但是往往只有一顆會非常忙碌 (CPU1 Loading 100%), 請問有什麼方式可以解決嗎?

以上如果有缺什麼資訊, 請跟我說, 我會儘量提供!

謝謝各位的回覆

fillano

  • 鑽研的研究生
  • *****
  • 文章數: 526
    • 檢視個人資料
回覆: Apache CPU 使用率 100%
« 回覆 #1 於: 2007-12-11 11:16 »
把一些不必要的模組拿掉吧。

出現這個訊息,表示你們掛了modules/test/mod_optional_hook_import模組上去。這應該是不需要用到的模組??(剛剛用grep找的)

mod_optional_hook_import, mod_optional_hook_export應該都只是一些example,正式的伺服器不需要掛載的。
Sapere aude! Habe Mut, dich deines eigenen Verstandes zu bedienen! ist also der Wahlspruch der Aufklärung.

babiku

  • 可愛的小學生
  • *
  • 文章數: 9
    • 檢視個人資料
回覆: Apache CPU 使用率 100%
« 回覆 #2 於: 2007-12-11 11:28 »
謝謝 fillano 學長的回覆,
但是我在編譯時已經選擇了 --enable-optional-hook-export --enable-optional-hook-import,
而我在 httpd.conf 也找不到相關的動作, 請問有辦法讓 Apache 啟動時, 不載入這些模組嗎?

再次謝謝 fillano!

fillano

  • 鑽研的研究生
  • *****
  • 文章數: 526
    • 檢視個人資料
回覆: Apache CPU 使用率 100%
« 回覆 #3 於: 2007-12-11 11:34 »
我不知道你的configure設定,但是可能你已經將這些模組編譯到httpd裡面而不是獨立的模組檔案(我猜)。如果是這樣,只好重新編譯了。

configure的時候不要加--enable-optional-hook-export以及--enable-optional-hook-import就可以了吧。
« 上次編輯: 2007-12-11 11:42 由 fillano »
Sapere aude! Habe Mut, dich deines eigenen Verstandes zu bedienen! ist also der Wahlspruch der Aufklärung.

babiku

  • 可愛的小學生
  • *
  • 文章數: 9
    • 檢視個人資料
回覆: Apache CPU 使用率 100%
« 回覆 #4 於: 2007-12-11 11:43 »
再次感謝 fillano 學長的快速回覆,
我們在編譯時確實加入了 --enable-optional-hook-export 以及 --enable-optional-hook-import 兩個選項.

請問現在有方法在不重新編譯 Apache 的情況下, 讓 httpd 啟動時不載入 hook-export 與 hook-import
兩個模組嗎?
因為主機上線已久, 若要重新編譯似乎有點困難.
但若只有重新編譯一途, 那麼我也得做了 ~

謝謝學長

fillano

  • 鑽研的研究生
  • *****
  • 文章數: 526
    • 檢視個人資料
回覆: Apache CPU 使用率 100%
« 回覆 #5 於: 2007-12-11 12:05 »
如果設定檔裡面沒有用LoadModule來載入也有作用的話,那表示這是用static link到httpd裡面,只有重新編譯一途了。

我看了一下mod_optional_hook_import.c,他根本也不用設定就會運作(每一個request都會寫入log)。所以這樣你也無法靠設定來disable他。
Sapere aude! Habe Mut, dich deines eigenen Verstandes zu bedienen! ist also der Wahlspruch der Aufklärung.

tony

  • 活潑的大學生
  • ***
  • 文章數: 204
    • 檢視個人資料
回覆: Apache CPU 使用率 100%
« 回覆 #6 於: 2007-12-11 13:22 »
請問一下,造成CPU 100%的process 是Apache (httpd) ,還是 tomcat or java?
-=-=-=
Powered by Linux
=-=-=-=-=-=-=-=-=

babiku

  • 可愛的小學生
  • *
  • 文章數: 9
    • 檢視個人資料
回覆: Apache CPU 使用率 100%
« 回覆 #7 於: 2007-12-11 13:38 »
tony 學長您好,
先謝謝您的回覆, 造成 CPU 100% 的 process 一直都是 httpd, tomcat 主機還算正常
附加檔是兩台主機 CPU 的情況 (主機是雙 CPU, 但是好像只有一顆在忙 ...)

如果還需要什麼資訊的話, 請跟我說

謝謝學長的幫忙!

babiku

  • 可愛的小學生
  • *
  • 文章數: 9
    • 檢視個人資料
回覆: Apache CPU 使用率 100%
« 回覆 #8 於: 2007-12-11 13:46 »
fillano 學長您好,
那如果這樣的話, 似乎只有重新編譯的方法了, 但是這會是造成 CPU loading 100% 的原因嗎? ???

謝謝

fillano

  • 鑽研的研究生
  • *****
  • 文章數: 526
    • 檢視個人資料
回覆: Apache CPU 使用率 100%
« 回覆 #9 於: 2007-12-11 16:37 »
說實話,我也不確定。

但是如果每個request(看了一下,他還包含sub request)都會寫入error log,是會浪費不少系統資源。但是這是否是瓶頸?可能還需要進一步測試吧。

如果要重新編譯的話,把你需要的模組放進去就好了,不需要掛上所有的模組;要不然就都編譯成動態載入的模組。就你的敘述,你恐怕把模組都編成靜態連結的了。

參考一下官方文件:
http://httpd.apache.org/docs/2.0/misc/perf-tuning.html
可以當作一個check list。

這裡提到了一些performance issue
http://confluence.atlassian.com/display/DOC/Using+Apache+with+mod_jk
主要是maxProcessors設定要與httpd的mpm設定匹配的問題。
Sapere aude! Habe Mut, dich deines eigenen Verstandes zu bedienen! ist also der Wahlspruch der Aufklärung.