我有一个由Puma处理的机架服务器,并通过ActiveRecord连接到PostgreSQL。
对于数据库配置,我将reaping_frequency
设置为5
,pool
设置为16
,connect_timeout
设置为15
。
对于puma配置,我将minimum_threads
设置为1
,maximum_threads
设置为16
,workers
设置为2
,worker_timeout
设置为25
。
当我对服务器进行基准测试时,我使用wrk,threads
设置为2
,concurrency
设置为10
,time
设置为60s
。
在几次请求后,我收到了这个错误:
2014-10-05 16:30:48 -0500: Rack app error: #<NoMethodError: undefined method `fields' for nil:NilClass>
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/activerecord-4.1.6/lib/active_record/connection_adapters/postgresql/database_statements.rb:141:in `exec_query'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/activerecord-4.1.6/lib/active_record/connection_adapters/postgresql_adapter.rb:954:in `select'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/activerecord-4.1.6/lib/active_record/connection_adapters/abstract/database_statements.rb:24:in `select_all'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/activerecord-4.1.6/lib/active_record/connection_adapters/abstract/query_cache.rb:68:in `block in select_all'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/activerecord-4.1.6/lib/active_record/connection_adapters/abstract/query_cache.rb:83:in `cache_sql'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/activerecord-4.1.6/lib/active_record/connection_adapters/abstract/query_cache.rb:68:in `select_all'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/activerecord-4.1.6/lib/active_record/querying.rb:39:in `find_by_sql'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/activerecord-4.1.6/lib/active_record/relation.rb:611:in `exec_queries'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/activerecord-4.1.6/lib/active_record/relation.rb:493:in `load'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/activerecord-4.1.6/lib/active_record/relation.rb:238:in `to_a'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/activerecord-4.1.6/lib/active_record/relation/delegation.rb:46:in `map'
/Users/krainboltgreene/Code/krainboltgreene/blankapi/lib/blankapi/account/presenter.rb:5:in `collection'
/Users/krainboltgreene/Code/krainboltgreene/blankapi/lib/blankapi/control/list.rb:9:in `initialize'
/Users/krainboltgreene/Code/krainboltgreene/blankapi/lib/blankapi/middleware/dispatch/route.rb:17:in `new'
/Users/krainboltgreene/Code/krainboltgreene/blankapi/lib/blankapi/middleware/dispatch/route.rb:17:in `handle'
/Users/krainboltgreene/Code/krainboltgreene/blankapi/lib/blankapi/middleware/dispatch.rb:22:in `call'
/Users/krainboltgreene/Code/krainboltgreene/blankapi/lib/blankapi/middleware/body_serializer.rb:15:in `call'
/Users/krainboltgreene/Code/krainboltgreene/blankapi/lib/blankapi/middleware/body_deserializer.rb:21:in `call'
/Users/krainboltgreene/Code/krainboltgreene/blankapi/lib/blankapi/middleware/authentication_bearer.rb:28:in `call'
/Users/krainboltgreene/Code/krainboltgreene/blankapi/lib/blankapi/middleware/accept_setter.rb:13:in `call'
/Users/krainboltgreene/Code/krainboltgreene/blankapi/lib/blankapi/middleware/chunker.rb:11:in `call'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/activerecord-4.1.6/lib/active_record/query_cache.rb:36:in `call'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/activerecord-4.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:621:in `call'
/Users/krainboltgreene/Code/krainboltgreene/blankapi/lib/blankapi/middleware/runtime.rb:14:in `call'
/Users/krainboltgreene/Code/krainboltgreene/blankapi/lib/blankapi/middleware/log.rb:15:in `call'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/rack-lineprof-0.0.2/lib/rack/lineprof.rb:25:in `call'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/puma-2.9.1/lib/puma/configuration.rb:71:in `call'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/puma-2.9.1/lib/puma/server.rb:490:in `handle_request'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/puma-2.9.1/lib/puma/server.rb:361:in `process_client'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/puma-2.9.1/lib/puma/server.rb:254:in `block in run'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/puma-2.9.1/lib/puma/thread_pool.rb:92:in `call'
/Users/krainboltgreene/.rvm/gems/ruby-2.1.2@blankapi/gems/puma-2.9.1/lib/puma/thread_pool.rb:92:in `block in spawn_thread'