精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-09-12
我们的服务器配置是4核单Intel Xeon(R) CPU 5130 2.00GHz,8G内存,300G SCSI硬盘,单台服务器每台的PV在300万以上。 最近搜索了下,发现PHP的cgi也有这个问题,原因是php-cgi会在每个请求结束的时候回收脚本使用的全部内存,但是并不会释放给操作系统,而是继续持有以应对下一次PHP请求。这样做大概是为了减少内存碎片化或者解决从系统申请内存之后又释放回操作系统所需要的时间不可控问题。 同样,ruby的fastcgi也有类似的问题,内存一直得不到释放,如下: total used free shared buffers cached Mem: 8165016 8145136 19880 0 38064 154864 -/+ buffers/cache: 7952208 212808 Swap: 2048248 17212 2031036 下午时才用了5G,到现在就8G了。 现在是写了个脚本,定时监控内存消耗,消耗大了就killall -9 fcgi,不过这样貌似也不太好吧,还在研究中,不知道哪个参数可以控制fastcgi的请求数量限制的? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-09-22
咋没人来一起讨论下呢?我可以帖下我的服务器配置参数。大家都用什么web server呢?Mongrel? Unicorn? Passenger? 还是?
|
|
返回顶楼 | |
发表时间:2011-09-22
passenger,不过我没啥经验
|
|
返回顶楼 | |
发表时间:2011-09-23
检查检查代码和使用的第三方库
iteye每天一百多万的动态PV,每个进程也就两百多M |
|
返回顶楼 | |
发表时间:2011-09-23
inosin 写道 检查检查代码和使用的第三方库
iteye每天一百多万的动态PV,每个进程也就两百多M 并发量比较大的地方有两个,数据接口(都是些内容列表之类的),大部分压力是靠memcached来解决的,并发量大了,内存消耗不一定是按照固定的比例提高的。 gem 'rails', '3.0.3' gem "haml", "3.0.24" gem "jquery-rails", "0.2.5" gem 'will_paginate', "3.0.pre2" gem 'inherited_resources', '~> 1.2.1' gem "mechanize" gem "hpricot" gem "apns" gem "liquid" gem "dynamic_form" gem "json" gem "paperclip" gem "open4" gem 'delayed_job' gem 'mysql2' gem 'whenever', :require => false gem "devise" gem "acts_as_list" gem "acts_as_tree" gem 'memcache-client' gem 'geoip' gem 'ipparse' |
|
返回顶楼 | |
发表时间:2011-09-23
偶做过用php 调命令kill mysql的connection,不是办法的办法
|
|
返回顶楼 | |
发表时间:2011-09-23
我用 nginx+unicorn的方式,通过god来管理unicorn进程。
god可以检查unicorn占用的内存大小,大于一定值的时候发送一个USR2的signal,让unicorn重启。不过unicorn这种方式的重启是处理完当前请求后再重启,所以用户不会感觉到。 |
|
返回顶楼 | |
发表时间:2011-09-24
t0uch 写道 我用 nginx+unicorn的方式,通过god来管理unicorn进程。
god可以检查unicorn占用的内存大小,大于一定值的时候发送一个USR2的signal,让unicorn重启。不过unicorn这种方式的重启是处理完当前请求后再重启,所以用户不会感觉到。 也是个办法,至少可以先解决当前问题。 还有没,其他朋友继续呀! |
|
返回顶楼 | |
发表时间:2011-09-25
今天是彻底的满了:
$ free total used free shared buffers cached Mem: 8165016 8144672 20344 0 6036 20880 -/+ buffers/cache: 8117756 47260 Swap: 2048248 2048248 0 |
|
返回顶楼 | |
发表时间:2011-09-25
我觉得应该是内存泄露
我用mechanize写个一个多线程采集,mechanize会添加到history 导致page一直被history引用而无法释放 最后跑到1个小时 机子就挂了 |
|
返回顶楼 | |