[英]Nginx + Unicorn + Rails not allowing more than 6 request until any tcp connection is free
我在Ruby on Rails中有一个与unicorn和nginx一起运行的应用程序。 由于巨大的数据库,我有一些请求需要一些时间来处理。
直到6请求,我才能够不延迟地浏览我的应用程序。 当我运行netstat -n | grep 'CONNECTED'
netstat -n | grep 'CONNECTED'
它说
unix 3 [ ] STREAM CONNECTED 37992166 /home/user/myapp/shared/sockets/unicorn.sock
unix 3 [ ] STREAM CONNECTED 37989365 /home/user/myapp/shared/sockets/unicorn.sock
unix 3 [ ] STREAM CONNECTED 37993053 /home/user/myapp/shared/sockets/unicorn.sock
unix 3 [ ] STREAM CONNECTED 37992166 /home/user/myapp/shared/sockets/unicorn.sock
unix 3 [ ] STREAM CONNECTED 37989335 /home/user/myapp/shared/sockets/unicorn.sock
unix 3 [ ] STREAM CONNECTED 37993083 /home/user/myapp/shared/sockets/unicorn.sock
而当我运行netstat -n | grep 'CONNECTING'
netstat -n | grep 'CONNECTING'
它什么也没显示。
但是在6请求之后,当我再次运行相同的命令时,除了上面的命令外,它说
unix 3 [ ] STREAM CONNECTING 37989334 /home/user/myapp/shared/sockets/unicorn.sock
unix 3 [ ] STREAM CONNECTING 37993089 /home/user/myapp/shared/sockets/unicorn.sock
即使我尝试从Firefox发送请求,它也会添加到CONNECTING
事物中,如果我没有记错,请等到tcp释放。
请帮助我该怎么做才能解决此错误。 谢谢
这是我的unicorn.rb
样子
working_directory "/home/user/myapp/current"
pid "/home/user/myapp/shared/pids/unicorn.pid"
stderr_path "/home/user/myapp/shared/log/unicorn.log"
stdout_path "/home/user/myapp/shared/log/unicorn.log"
listen "/home/user/myapp/shared/sockets/unicorn.sock", backlog: 64
worker_processes 6
preload_app true
timeout 600
before_fork do |server, worker|
defined?(ActiveRecord::Base) &&
ActiveRecord::Base.connection.disconnect!
# Quit the old unicorn process
old_pid = "#{server.config[:pid]}.oldbin"
if File.exists?(old_pid) && server.pid != old_pid
begin
Process.kill("QUIT", File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
# someone else did our job for us
end
end
end
after_fork do |server, worker|
if defined?(ActiveRecord::Base)
config = ActiveRecord::Base.configurations[Rails.env] ||
Rails.application.config.database_configuration[Rails.env]
config['pool'] = ENV['DB_POOL'] || ENV['RAILS_MAX_THREADS'] || 10
ActiveRecord::Base.establish_connection(config)
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.