2016-03-24 5 views
5

Mein Stack: RoR4.2.6, Mongoid 5.0.1Wie kann ich Verbindungszeitüberschreitungen in Rails/Mongoids aus der Warteschlange entfernen?

Ich Benchmarking meiner Seite Apache Benchmark mit und schlagen Fehler halten wie folgt aus:

2016-03-24 22:15:36 +0000 pid=23187, severity=FATAL, 
ActionView::Template::Error (Timed out attempting to dequeue connection after 1 sec.): 
    22: =link_to '/albums/' + mention.object.slug do 
    23:  .small-12.medium-6.large-4.columns.left 
    24:  .mention-box 
    25:   %img.mention-thumb{src: mention.object.thumb_url} 
    26:   %h5.mention-name 
    27:   = mention.object.name 
    28:   %br 
    app/models/mention.rb:13:in `object' 
    app/views/posts/_full_mention.html.haml:25:in `block in _app_views_posts__full_mention_html_haml___1744802549767261808_47000690052420' 

und nur als Referenz, ist dies die Linie das ist in mention.rb, nur eine einfache Entdeckung Abfrage immer genannt:

def object 
    Object.const_get(type).find(mention_id) 
    end 

Meine Vermutung ist, dass dies bedeutet, ich schlage mongoDB mit zu viele Anfragen, und es kann nicht mithalten, aber nicht ganz sicher, wie man behebe dies. Sollte ich nur eine höhere Warteschlange für Mongoid setzen? Schätze jeden Rat!

Antwort

8

gleiches Problem hat, gelöst durch wait_queue_timeout Attribut in mongoid.yml Produktion Config hinzu:

production: 
    clients: 
    default: 
    uri: mongodb://xxx.com:27017/mongo 
    options: 
     connect_timeout: 15 
     wait_queue_timeout: 15 
+4

yup! Ich habe es auch selbst auf diese Weise gelöst. Danke für die Antwort! –

5

Statt wait_queue_timeout von zwicken, die für ist:

, in Sekunden zu warten

Die Zeit, im Verbindungspool für eine Verbindung [..] [1]

Ich würde empfehlen,zu optimierenund max_pool_size.

Die minimale/maximale Anzahl der Verbindungen im Verbindungspool [1]

so Ihr Server/Hintergrund-Arbeiter auf eine Verbindung warten muss nicht.

Wenn Sie Ihre Anwendung mit einem Multithread-Anwendungsserver (Puma) oder in Sidekiq ausführen, müssen Sie den Verbindungspool mit der entsprechenden Größe einrichten.

[1] https://docs.mongodb.com/ecosystem/tutorial/mongoid-installation/

Verwandte Themen