Phusion Passenger如何处理额外连接?

时间:2016-09-08 21:36:30

标签: ruby-on-rails passenger

我想扩展Phusion Passenger的Max pool size设置。我正在使用Nginx和Phusion Passenger(单线程)。这意味着每次Passenger生成一个新的Rails实例时,Rails实例将是单线程的,因此只需要1个数据库连接,这就是我将数据库池指定为1的原因:

default: &default
  adapter: mysql2
  encoding: utf8
  collation: utf8_unicode_ci
  pool: 1
  username: root
  password:
  host: localhost

根据文件:

  

最大池大小表示Passenger的最大进程数   会保持。有一个限制,因为每个过程都消耗   内存,因此有太多进程可能会导致服务器崩溃。这个限制   可通过--max-pool-size命令行选项进行配置。   乘客不会超过此限制。

当我运行passenger-status时,它显示进程的内存占用为231M:

# passenger-status
...
Requests in queue: 0
  * PID: 1982    Sessions: 0       Processed: 28      Uptime: 35d 1h 47m 47s
    CPU: 0%      Memory  : 231M    Last used: 1s a

我的服务器包含2049mb的内存。考虑到系统使用的其他资源(0.9),我使用以下公式:

(2049 * 0.9) / 231 = 8

因此,我的最大池大小可以安全地为8.也就是说,我可以同时使用8个Passenger进程。但是,如果突然间,我有20个tcp连接到我的服务器,其他12个tcp连接是否必须等待(被乘客阻止),直到其他tcp连接关闭(在他们完成http请求之后)? (我假设乘客进程对应于单线程应用程序服务器上服务器上的tcp连接)。

0 个答案:

没有答案