使用worker后,系统消耗剧增许多。
siyeclover
|
1#
siyeclover 发表于 2006-11-30 21:46
使用worker后,系统消耗剧增许多。
诸位大侠,我对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%以下。 编译进核内的有:
[Copy to clipboard] [ - ]
CODE:
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 动态加载的模块有:
[Copy to clipboard] [ - ]
CODE:
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相关配置是:
[Copy to clipboard] [ - ]
CODE:
<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看到的情况是:
[Copy to clipboard] [ - ]
CODE:
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内核情况:
[Copy to clipboard] [ - ]
CODE:
# ./httpd -l
Compiled in modules: core.c worker.c http_core.c mod_so.c 模块,好像多了一点,但似乎也没法减少:
[Copy to clipboard] [ - ]
CODE:
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的设置
[Copy to clipboard] [ - ]
CODE:
<IfModule mpm_worker_module>
StartServers 3 MaxClients 1500 MinSpareThreads 25 MaxSpareThreads 200 ServerLimit 40 ThreadLimit 200 ThreadsPerChild 50 MaxRequestsPerChild 0 </IfModule> 请诸位大侠帮我分析一下问题出在哪里。 多谢指点。 |