簡體   English   中英

Puma Web服務器(ROR)和連接超時

[英]Puma web server (ROR) and connection timeout

我有一個自定義的Ruby on Rails安裝程序,並使用puma作為Web服務器(由Nginx支持-套接字)

我連接到的數據庫是rds介質(因此296個連接限制)。 我的puma設置是線程1:32和4個工人。 具有128個連接池。

我的負載很高,每秒300個請求,每說1000個請求,就會進行更長的計算,這大約需要3秒鍾(獲取所有事件,進行一些計算並更新它們)。

我收到錯誤

ActiveRecord::ConnectionTimeoutError: could not obtain a database connection within 5.000 seconds (waited 5.016 seconds)

但是,如果我查看rds數據庫,則僅打開了43個連接。 我的內存大約是7000 MB中的2000 MB(2個核心處理器處於100%的狀態),我想知道為什么即使我的所有連接都沒有打開,我也會得到連接超時(當然,puma配置還可以)嗎?

謝謝您幫忙!

編輯:

在我的puma.rb中,我有:

on_worker_boot do
  ActiveRecord::Base.connection_pool.disconnect!

  ActiveSupport.on_load(:active_record) do
    config = Rails.application.config.database_configuration[Rails.env]
    config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10 # seconds
    config['pool']              = ENV['DB_POOL'] || 128
    ActiveRecord::Base.establish_connection
  end
end

關於數據庫池rails配置指南中所述,當所有數據庫連接都用盡時,ActiveRecord將等待一個釋放,我假設您增加的數量是http連接限制,而不是db連接限制,
您可以編輯database.yml並將連接限制增加到296 ,這是rds實例的限制

production:
  adapter: mysql2
  database: /path/to/sock
  pool: 296
  # username, password, etc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM