最近几天,Passenger已经在我的Slicehost VPS上占用了大量的内存,我似乎无法控制它。 它运行了好几个小时,然后突然产生了大量的ruby。 我认为Apache是问题所在,所以我切换到Nginx,但问题依然存在。 这是一个top
的转储:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 5048 avishai 20 0 160m 43m 1192 S 0 10.9 0:00.77 ruby1.8 5102 avishai 20 0 151m 41m 1392 S 0 10.6 0:00.07 ruby1.8 5091 avishai 20 0 153m 30m 1400 D 0 7.6 0:00.27 ruby1.8 5059 avishai 20 0 158m 27m 1344 D 0 7.0 0:00.64 ruby1.8 4809 avishai 20 0 161m 27m 1208 D 0 6.9 0:06.65 ruby1.8 4179 avishai 20 0 162m 23m 1140 D 0 5.9 0:25.25 ruby1.8 5063 avishai 20 0 159m 23m 1200 D 0 5.9 0:00.65 ruby1.8 5044 avishai 20 0 159m 12m 1172 S 0 3.3 0:00.79 ruby1.8 5113 avishai 20 0 149m 9.8m 1576 D 0 2.5 0:00.00 ruby1.8 5076 avishai 20 0 155m 9.8m 1128 S 0 2.5 0:00.33 ruby1.8 3269 mysql 20 0 239m 5356 2156 S 0 1.3 0:00.35 mysqld 3510 root 20 0 49948 3580 736 S 0 0.9 1:01.86 ruby1.8 4792 root 20 0 98688 3560 644 S 0 0.9 0:00.84 ruby1.8 4799 avishai 20 0 148m 2204 600 S 0 0.5 0:01.64 ruby1.8 3508 root 20 0 295m 1972 1044 S 0 0.5 0:35.77 PassengerHelper 3562 nobody 20 0 39776 964 524 D 0 0.2 0:00.82 nginx 3561 nobody 20 0 39992 948 496 D 0 0.2 0:00.72 nginx 4238 avishai 20 0 19144 668 456 R 0 0.2 0:00.06 top 3293 syslog 20 0 123m 636 420 S 0 0.2 0:00.06 rsyslogd 3350 nobody 20 0 139m 432 220 S 0 0.1 0:00.05 memcached 3364 redis 20 0 50368 412 300 S 0 0.1 0:00.33 redis-server 1575 avishai 20 0 51912 324 216 S 0 0.1 0:00.00 sshd 3513 nobody 20 0 72272 192 160 S 0 0.0 0:00.02 PassengerLoggin 3330 root 20 0 21012 180 124 S 0 0.0 0:00.00 cron 3335 root 20 0 49184 152 144 S 0 0.0 0:00.01 sshd 1 root 20 0 23500 92 88 S 0 0.0 0:00.08 init 1573 root 20 0 51764 88 80 S 0 0.0 0:00.00 sshd 3505 root 20 0 89044 84 80 S 0 0.0 0:00.00 PassengerWatchd 3319 root 20 0 5996 68 64 S 0 0.0 0:00.00 getty 3323 root 20 0 6000 68 64 S 0 0.0 0:00.00 getty 3325 root 20 0 5996 68 64 S 0 0.0 0:00.00 getty 3326 root 20 0 6000 68 64 S 0 0.0 0:00.00 getty 3328 root 20 0 5996 68 64 S 0 0.0 0:00.00 getty 3383 root 20 0 5996 68 64 S 0 0.0 0:00.01 getty
这是我的环境:
RubyGems Environment: - RUBYGEMS VERSION: 1.6.2 - RUBY VERSION: 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux] - INSTALLATION DIRECTORY: /home/avishai/.rvm/gems/ruby-1.8.7-p334 - RUBY EXECUTABLE: /home/avishai/.rvm/rubies/ruby-1.8.7-p334/bin/ruby - EXECUTABLE DIRECTORY: /home/avishai/.rvm/gems/ruby-1.8.7-p334/bin - RUBYGEMS PLATFORMS: - ruby - x86_64-linux - GEM PATHS: - /home/avishai/.rvm/gems/ruby-1.8.7-p334 - /home/avishai/.rvm/gems/ruby-1.8.7-p334@global - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - "gem" => "--no-ri --no-rdoc" - :sources => ["http://gems.rubyforge.org", "http://gems.github.com"] - REMOTE SOURCES: - http://gems.rubyforge.org - http://gems.github.com
看来你有很多的实例运行。 尝试限制这是适合您的系统。
passenger_max_pool_size 2
我倾向于每个128MB内存拥有一个实例。
完整的文档: http : //www.modrails.com/documentation/Users%20guide%20Nginx.html#PassengerMaxPoolSize