LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1025|回复: 8

(急切的心情)希望大家帮忙分析一下,我的服务器内存占用问题。

[复制链接]
发表于 2008-3-6 09:45:24 | 显示全部楼层 |阅读模式
我的服务器上运行了一个PW论坛,环境为apache2.0+mysql4.0.26+php4.4.每天的流量大约10000IP左右。现在的问题是:我的2G内存长时间的被吃掉1.9G左右,但是论坛运行良好,速度也还可以,我不断的调试了HTTPD.CONF和my.cnf,但没有效果。我很担心服务器在大点访问量会崩溃掉,请大家帮忙分析一下到底是什么原因造成的?
 楼主| 发表于 2008-3-6 09:47:32 | 显示全部楼层
我的一些环境
uname -a
Linux host.cn 2.6.18-53.el5 #1 SMP Mon Nov 12 02:22:48 EST 2007 i686 i686 i386 GNU/Linu

apachectl -v
Server version: Apache/2.0.63
Server built:   Mar  1 2008 15:48:20

apachectl -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
0  0    112 131100 154640 1297984    0    0    19    20  154   95  6  1 92  1  0
1  1    112 134216 154660 1298220    0    0    55    84 1671  522  5  1 93  1  0
0  1    112 138692 154704 1298676    0    0    70    96 1638  460  5  1 94  1  0
0  1    112 145984 154740 1298940    0    0    96    86 1549  342  3  1 95  1  0
1  1    112 150972 154812 1300044    0    0   175    84 1677  534 19  1 79  1  0
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-6 09:48:43 | 显示全部楼层
top

top - 08:47:39 up 15:53,  1 user,  load average: 0.76, 0.60, 0.43     
Tasks:    292   total,      2   running,    289   sleeping,      0   stopped,      1   zombie     
Cpu(s):     4.1%    us,     0.4%    sy,     0.0%    ni,    94.5%    id,     0.8%    wa,     0.1%    hi,     0.2%    si,     0.0%    st     
Mem:      2075416k   total,     1994420k   used,       80996k   free,      153424k   buffers     
Swap:     2096440k   total,         112k   used,     2096328k   free,     1288700k   cached     

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+ COMMAND              
    1938 www       15   0 15348 7644 2196 S    2  0.4   0:00.55 httpd               
    1497 www       15   0 15376 7624 2232 S    2  0.4   0:01.41 httpd               
    1336 www       15   0 15444 7692 2208 S    1  0.4   0:01.30 httpd               
    1789 www       18   0 15328 7656 2216 S    1  0.4   0:00.82 httpd               
    2239 www       15   0 14832 7044 2184 S    1  0.3   0:00.04 httpd               
    2244 www       15   0 14832 7048 2184 S    1  0.3   0:00.04 httpd               
    2251 www       15   0 15200 7308 2164 S    1  0.4   0:00.04 httpd               
    2072 www       16   0 15184 7452 2196 S    1  0.4   0:00.30 httpd               
    2237 www       15   0 15124 7352 2184 S    1  0.4   0:00.05 httpd               
    2240 www       16   0 14648 6712 2180 S    1  0.3   0:00.02 httpd               
    2246 www       17   0 14672 6688 2164 S    1  0.3   0:00.02 httpd               
    2249 www       17   0 14648 6712 2180 S    1  0.3   0:00.02 httpd               
    2261 mysql     15   0  319m  84m 1972 S    1  4.2  53:46.86 mysqld               
       2252 www       24   0 14716 6748 2124 R    0  0.3   0:00.01 httpd               
       2269 root      15   0  2304 1124  792 R    0  0.1   0:00.03 top                  
       1 root      15   0  2044  632  544 S    0  0.0   0:01.10 init                 
       2 root      RT   0     0    0    0 S    0  0.0   0:00.36 migration/
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-6 09:52:55 | 显示全部楼层
从TOP上看

cpu占用不大,而且每个httpd 也只有15M,mysql占用也不大320m左右,怎么有那么大内存被使用呢??释放不出来?

从vmstat 看,bi,bo长期不为0,说明内存的状态也不好。

真不知道怎么回事!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-6 09:57:42 | 显示全部楼层
我的httpd.conf关键部分如下:

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15

<IfModule prefork.c>
       StartServers         5
       MinSpareServers      5
       MaxSpareServers     10
       ServerLimit       1024
       MaxClients        768
       MaxRequestsPerChild  1000
   </IfModule>
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-6 09:59:47 | 显示全部楼层
# The MySQL server
[mysqld]
port = 3306
socket = /tmp/mysql.sock
socket = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 256M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 1M
net_buffer_length = 16K
myisam_sort_buffer_size = 1M
max_connections=120
#addnew config
wait_timeout =120
back_log=100
read_buffer_size = 1M
thread_cache=32
skip-innodb
skip-bdb
skip-name-resolve
join_buffer_size=512k
query_cache_size = 32M
interactive_timeout=120
long_query_time=10
query_cache_type= 1
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-6 10:01:05 | 显示全部楼层
mysql的查询次数统计
统计 ø 每小时 ø 每分钟 ø 每秒
1,381 k 81.35 k 1.36 k 22.60
回复 支持 反对

使用道具 举报

发表于 2008-3-6 10:32:34 | 显示全部楼层
内存吃完很正常,linux和windows不同,windows会在内存还没有用完的时候就去使用swap,但是linux要内存基本用完才会用swap,空着内存干嘛?资源浪费么,只要不要用到swap,不会影响性能,如果使用了大量swap,那就需要调整了。
回复 支持 反对

使用道具 举报

发表于 2008-3-8 16:57:20 | 显示全部楼层
没发现啥大问题。
CPU很闲。
没有使用到Swap,磁盘压力很小。

数据库不知道在不在能不能再优化,使用Cache减少数据库的查询。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表