Bana bu diğer SO sorusuna yön veren PG::ConnectionBad: could not fork new process for connection: Cannot allocate memory
oldu. Ben Heroku desteği için çalışıyorum ve Middleware/Rack/ActiveRecord::QueryCache#call
, New Relic tarafından sıkça sorulan bir sorundur. Ne yazık ki, sorunun kaynağı her zaman başka yerlerde olduğu için genellikle kırmızı bir ringa balığı.
QueryCache
, Rails ilk önce bir bağlantıyı kullanıma sunmaya çalışır, bu nedenle bağlantıyla ilgili herhangi bir sorun, 'beklemede' bekleyen bir istek olarak burada görünür. Bu, veritabanı sunucusunun bağlantıların dışında olduğu anlamına gelmez (Postgres için Librato grafikleri varsa bunu gösterir). Büyük olasılıkla, bir şeyin kötü bir duruma girmesi için belirli veritabanı bağlantılarına neden olduğu ve yeni bağlantı isteklerinin beklendiği anlamına gelir. Bu, birden çok iş parçacığının kullanıldığı Puma'nın eski sürümlerinde ve reaping_frequency
öğesinin ayarlandığı durumlarda oluşabilir - bazı bağlantılar kötü duruma geçerse ve diğerlerine yanıt verilirse bu sorunlara neden olur. aşağıdaki gibi
Bazı üst düzey önerileri
şunlardır:
- Yükseltme Yakut & Puma
rack-timeout
mücevher kullanılıyorsa, çok
Bu güncellemeler genellikle yardımcı olduğunu yükseltin. Aksi takdirde, iş parçacıklarından çalışan tabanlı işlemlere geçiş veya PgBouncer gibi bir Postgres bağlantı havuzu kullanma gibi başka seçenekler de vardır. Postgres ile kullanmak için eşzamanlı web sunucularını yapılandırma hakkında daha fazla öneri sunuyoruz: https://devcenter.heroku.com/articles/concurrency-and-database-connections
kendime yanıt: Nadiren talep edilmiş olsa bile, en yavaş veritabanı sorgularını kontrol edin, etkilerinin geri kalanı sorgunun geri kalanında çok büyük. – user3029400
Hangi önbellek deposunu kullanıyorsunuz?Hata ayıklamanın ilk sebebi, mağazanın yanıt vermek için ne kadar uzun sürdüğü ya da (önbellek deposu dosya tabanlıysa), önbellek deposundaki verilerin seri hale getirilmesinin çok uzun sürmesi olabilir mi? – jbielick