nginx+ Pushion Passenger 报错 connect() to unix:/passenger_helper_server failed

nginx+ Pushion Passenger 报错

[error]  connect() to unix:/passenger_helper_server failed (11: Resource temporarily unavailable)
原因:后端资源不够用
ps axu|grep Rack|wc -l 如果得到6 说明passenger_max_pool_size 可能用的是默认值
解决
passenger_max_pool_size 调整为32
问题解决

######################################################

Pushion Passenger的配置选项

>> passenger_root <directory> 

指定Passenger的安装根目录

>> passenger_ruby <filename> 
指定Passenger使用的Ruby解析器的目录(按照安装过程中推荐的值即可)

>> passenger_enabled on|off
可以定义在http/server/location/if ,默认off

>> passenger_base_uri <uri>
可以定义在http/server/location/if 中多次定义,为同一VPS配置多个应用

>> passenger_use_global_queue <on|off>

默认情况下Passenger使用一个全局队列(Global queue)来存放请求。当有请求到来时会首先看后端的处
理进程是否有空闲的,有的话将该请求转发给请求进程。没有的话则存储在自己的队列里面。当该功能被
关闭时,会在各个后台进程的内部自己维护一个独立的队列,而不是全局共享的。这样会出现一个情况:

假如某个后台进程因为挂起的request数量比较少,那么Passenger会把新的请求都分配到该进程。如果新
的请求都是属于比较耗时的请求,那么会造成该进程压力非常大,响应速度变慢。但其它已经处理完请求
的空闲进程却无法派上用场。

默认情况下这个参数的值是on

>> passenger_buffer_response <on|off>

当这个参数被配置为on时,Passenger会对页面的输出进行缓存。也就是将response缓存到Passenger
中,然后逐步发送到客户端。这样做的目的是为了避免在response的内容比较大时,整个应用的实例被
锁住,直到所有的内容都被完全发送到客户端为止。

默认情况下这个参数的值是on

>> passenger_friendly_error_pages on|off 

可以让passenger在错误发生时以一种友好的形式来显示错误信息(包括堆栈调用,启动信息,建议等)。
强烈建议在生产环境下关闭该参数

默认情况下这个参数的值是on

>> passenger_max_pool_size <integer>

这个参数用于配置Passenger同一时刻可以并行的RoR/Rack应用实例的数量(注意是所有Rails应用)。推荐
的参数值至少等于CPU(内核的数目)。如果有2G的RAM,那么可以配置为30个。如果是只有256M内存
的VPS则建议配置为2

这个参数只能在http block中定义,默认值是6

>> passenger_min_instances <integer>

这个参数用于指定Passenger应该保留的Rails应用的数目。它会在应用第一次被访问时,让Passenger启
动等于这个数目的实例并一直保持在内存中。即便是一直处于空闲状态或者到了清除时间。

注意这个参数并不会pre-start应用!也即是说只有在应用第一次被访问时,才会创建对应数目的实例,而
不会在Nginx启动时就预先加载。所以第一次访问时有可能会比较慢。如果需要需要预加载,需要配合另外
一个参数passenger_pre_start

这个参数的默认值是1

>> passenger_max_instances_per_app <integer>

这个参数和上面max_pool_size的区别是,max_pool_size是限定Passenger可以同时启动的所有Rails/
Rack应用的数目(可以是多个app instance的总和),而这个参数是用于单独指定某个app instance的数量
的。这个参数可以限制某个app instance占用了所有的pool和CPU时间片。

这个参数的值必须小于passenger_max_pool_size,0代表单个应用的实例数量没有限制(最大值等于
max_pool_size)。

这个参数只能在http block中定义,默认值是0

>> passenger_pool_idle_time <integer>

这个参数指定了每个app instance最长的空闲时间。当一个应用在指定的时间内都没有接收到请求而处于
空闲状态的时候,它将会被销毁而回收所占用的内存。

推荐的配置时间是应用页面平均访问时间 * 2。如果设置的值过小意味着应用会经常被实例化和销毁,这
个过程比较耗时。如果是在非共享的主机环境下,或者需要7*24小时的响应,应该设置为0

当时设置为0不意味着永远不会被销毁。当另外一个app instance需要启动一个worker process但Pass-
enger已经没有工作线程了时,会强制将一个空闲状态的app instance回收以空出worker process

这个参数只能在http block中定义,默认值是300秒

>> passenger_pre_start <url>

这个参数可以让Passenger在Nginx启动时,预先加载指定的应用。但要注意的是即便是预先加载的应用
在passenger_pool_idel_time 到达时,也会被销毁。如果需要继续保留在内存中,就要搭配前面提到的
passenger_min_instances。

URL支持完整的server_name,也可以是sub-URI

这个参数只能在http block中定义,可以被定义无限次。

>> passenger_log_level <integer>

这个参数可以指定Passenger如何往Nginx的日志文件中写日志。参数值越大写入的内容越详细。总共
分为4级:0 仅显示错误和异常;1 显示有用的调试信息(供管理员定位错误用);2 显示更加详细的信息
(供开发过程使用);3 显示所有日志信息。

这个参数只能在http block中定义,默认的级别是0

>> passenger_debug_log_file <filename>

这个参数可以指定Passenger将错误和调试信息写到何处。

这个参数只能在http block中定义,默认情况下日志会写到Nginx的全局日志文件

>> rails_env <string>

这个参数允许针对不同的应用,设置不同的环境。可以在http/server/block/if block中定义,每处一次

这个参数的默认值是production

你可能感兴趣的:(nginx+ Pushion Passenger 报错 connect() to unix:/passenger_helper_server failed)