LifeType 中文開發論壇

支援 => 安裝與設定 => 主題作者是: minhong 於 九月 08, 2006, 11:18:26 上午



主題: top 之後,發現會有殘留的 httpd process
作者: minhong九月 08, 2006, 11:18:26 上午
我發現我每對 lifetype 的網頁下一次 request (網頁上點一篇文章)
top 就會增加 2 個 httpd process,每個佔用的資源如下:

  PID USERNAME  THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
  687 www         1   4    0 30808K 25632K accept   0:02  5.37% httpd
  663 www         1   4    0 30388K 25272K accept   0:01  3.76% httpd

然後主記憶體就吃掉 12 M 左右

好吧,我期待 1.1 版的 5M
但目前我發現的問題是

就算吃了這麼多資源掉好了,但在一段時間之後,HTTP connection 應該要斷掉也要放出 resource
netstat -a 之後,已經沒有看到原本的 connection 了
但 top 的結果,上面那類型的 process 還是佔住 resource
請問這是 lifetype 的問題,還是我該做什麼 web server 的調校 ?

----
使用的環境很簡露陋
VMware server, FreeBSD 6.1 stable, memory 192 M
apache 版本 2.2, MySQL 版本 5.1.11


主題: Re: top 之後,發現會有殘留的 httpd process
作者: markwu九月 08, 2006, 04:44:53 下午
這個你必須自行調整,因為這是 apache 調教的問題了。

1. 把 keepalive_time_out 調為兩秒,當 2 秒沒去 access 就關掉 connection。
2. 如果你有用 eaccelerator ... 現在的 eaccelerator 似乎不會是放已經佔據的記憶體,我覺的是 bug ... 但是他的論壇沒人再討論。這意思就是 deamon 還會一直活著,即使沒有 connection。
3. 我說的LifeType 佔據 5M,是扣掉 php 本身的 library以及 eaccelerator ,才能是說用到 5M。如果你加了一堆東西,又用了 eacceleratoor,那麼一個 request 還是可能到 32M 甚至是 50M

Mark


主題: Re: top 之後,發現會有殘留的 httpd process
作者: minhong九月 08, 2006, 09:10:29 下午
感謝回應。

不過,就我觀察而得
修改你說 KeepAliveTimeout 之後

確實是讓 connection 可以提早關閉
top 可以觀察到,該 request process 的 state 很快的從 sbwait -> accept
(sbwait  應該就是 web server 仍然願意等待 client 下個 request 的時間 (秒) )
時間一到 state 就變成 accept

如此一來,原本的問題仍在
就是存留著一堆 accept process,resource 仍然沒有被 release


---
目前用很笨的方法
跑 crontab 定期去清理 I (idle) httpd 的 process


主題: Re: top 之後,發現會有殘留的 httpd process
作者: markwu九月 08, 2006, 11:43:03 下午
我只有再使用 eaccelerator 時會發生這樣的問題。如果單純的 Apache,我似乎還沒遇過這樣的問題。

我現在其實比較喜歡 lighttpd,比Apache 輕巧許多。

Mark