- 论坛徽章:
- 0
|
诸位大侠,我对apache不太熟,遇到了一个问题,这里向诸位大侠请教。
案例是一个高峰时四五百人在线的论坛。
硬件环境:CPU Intel(R) Xeon(TM) CPU 2.80GHz ,内存2G
软件环境,内核 2.6.15-dcc-smp
之前使用的apache是系统自带的,prefork,load average一般都在1以下,甚至很多时候在0.4以下,CPU占用率通常超不过20%,大多数时候都是10%以下。
编译进核内的有:
- Compiled in modules:
- core.c
- mod_access.c
- mod_auth.c
- mod_log_config.c
- mod_logio.c
- mod_env.c
- mod_setenvif.c
- prefork.c
- http_core.c
- mod_mime.c
- mod_status.c
- mod_autoindex.c
- mod_negotiation.c
- mod_dir.c
- mod_alias.c
- mod_so.c
复制代码
动态加载的模块有:
- auth_pam.load dav_fs.load layout.load php4.conf userdir.load
- auth_shadow.load dav.load ntlm.load php4.load
- cgi.load file_cache.load perl.conf rewrite.load
- dav_fs.conf include.load perl.load userdir.conf
复制代码
prefork相关配置是:
- <IfModule prefork.c>
- StartServers 20
- MinSpareServers 20
- MaxSpareServers 100
- ServerLimit 1000
- #MaxClients 300
- MaxClients 400
- MaxRequestsPerChild 0
- </IfModule>
复制代码
因为要用的某些模块没法加进来,所以我另外编译了一个apache,在这里看到prefork和worker的介绍,就决定使用worker。
但是今天换用后,发现系统消耗比从前用prefork高了很多, load average:绝大多数时候都在1以上,刚才我甚至看到 load average:到了19,吓我一跳。
而CPU资源的消耗也比用prefork时多了很多,大多数时候都是30%,最多到50%,内存消耗倒是没变化。
我知道CPU和内存买回来就是要用的,但是现在论坛人数没有增加,换用worker系统消耗就忽然多了这么多,我觉得很奇怪。
另外,我担心如果人数再增加,或者上别的应用,系统会吃不消。
目前用top看到的情况是:
- top - 21:38:04 up 72 days, 12:39, 1 user, load average: 1.31, 1.25, 1.51
- Tasks: 79 total, 3 running, 76 sleeping, 0 stopped, 0 zombie
- Cpu(s): 45.4% us, 4.5% sy, 0.0% ni, 48.9% id, 0.2% wa, 0.0% hi, 1.0% si
- Mem: 2073532k total, 2016800k used, 56732k free, 42984k buffers
- Swap: 3108856k total, 1516k used, 3107340k free, 1302328k cached
- PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
- 7850 www-data 16 0 511m 86m 4396 S 37.6 4.3 10:19.14 httpd
- 6402 www-data 18 0 508m 80m 4524 S 23.0 4.0 63:47.19 httpd
- 7966 www-data 17 0 507m 80m 4240 S 12.3 4.0 9:56.60 httpd
- 8022 www-data 17 0 514m 86m 4400 S 11.3 4.3 9:07.98 httpd
- 6371 www-data 17 0 511m 82m 4568 S 7.7 4.1 63:32.37 httpd
复制代码
httpd内核情况:
- # ./httpd -l
- Compiled in modules:
- core.c
- worker.c
- http_core.c
- mod_so.c
复制代码
模块,好像多了一点,但似乎也没法减少:
- LoadModule authn_default_module modules/mod_authn_default.so
- LoadModule authz_host_module modules/mod_authz_host.so
- LoadModule authz_default_module modules/mod_authz_default.so
- LoadModule auth_basic_module modules/mod_auth_basic.so
- LoadModule auth_digest_module modules/mod_auth_digest.so
- LoadModule include_module modules/mod_include.so
- LoadModule filter_module modules/mod_filter.so
- LoadModule deflate_module modules/mod_deflate.so
- LoadModule log_config_module modules/mod_log_config.so
- LoadModule logio_module modules/mod_logio.so
- LoadModule env_module modules/mod_env.so
- LoadModule headers_module modules/mod_headers.so
- LoadModule setenvif_module modules/mod_setenvif.so
- LoadModule mime_module modules/mod_mime.so
- LoadModule autoindex_module modules/mod_autoindex.so
- LoadModule vhost_alias_module modules/mod_vhost_alias.so
- LoadModule negotiation_module modules/mod_negotiation.so
- LoadModule dir_module modules/mod_dir.so
- LoadModule alias_module modules/mod_alias.so
- LoadModule rewrite_module modules/mod_rewrite.so
- LoadModule php5_module modules/libphp5.so
- LoadModule limitipconn_module modules/mod_limitipconn.so
复制代码
mpm的设置
- <IfModule mpm_worker_module>
- StartServers 3
- MaxClients 1500
- MinSpareThreads 25
- MaxSpareThreads 200
- ServerLimit 40
- ThreadLimit 200
- ThreadsPerChild 50
- MaxRequestsPerChild 0
- </IfModule>
复制代码
请诸位大侠帮我分析一下问题出在哪里。
多谢指点。
[ 本帖最后由 siyeclover 于 2006-11-30 21:56 编辑 ] |
|