2016-09-02 2 views
0

vorzuführen wir haben große sphinx verteilte Cluster,
einzigen Frontend verteilten Index, mit 3 Backend-Servern jeweils mit kleinen lokalen verteilten Index. 200 Fäden, das fällt schnell auf -gibt es eine Möglichkeit, Threads auf sphinxsearch

von Zeit zu Zeit, während hohen Traffic-Spitze, auf Back-End-Servern wir durchschnittliche Auslastung so hoch wie 80.

zur gleichen Zeit zu sehen, kann ich Sphinx HAWE Spawn 150 sehen sage 50 und dann gehen sie zurück zu 150 - 200, dann wieder zurück zu 50 und so weiter.

Gibt es eine Möglichkeit, diese Threads "vorzuforsten"? z.B. etwas wie Apache's MinSpareServers.

In der Tat verwenden wir dedizierte Hardware, so werden wir kein Problem haben, wenn sphinx mehr Speicher verwendet, wenn im Leerlauf ist.

Auf den Backend-Servern verwenden wir den Echtzeit-Index und wir können das Prefork-Modell nicht umschalten.

wir haben vollen Root-Zugang, so dass wir auch Linux Systemeinstellungen optimieren können.

Antwort

2

Nur in 2.3 worker = thread_pool erstellt am Anfang eine feste Anzahl von Arbeitsfäden, die entweder 1,5 * erkannten Kernen oder max_chirders Direktive ist. Die Fäden werden unter einen Pool gelegt. Die eingehenden Verbindungen werden von separaten Threads behandelt, die die Abfragen dem Arbeitspool zuweisen. Die alten Worker = Threads erstellen für jede Abfrage einen Thread.

Verwandte Themen