Solr 5: Ograniczenie wykorzystania sieci przez replikację

W sytuacji, kiedy nasz indeks jest duży (lub jest ich kilka) w chwili, kiedy konieczna jest pełna replikacja Solr potrafi wykorzystać całą dostępną przepustowość łącza (o ile dyski dadzą radę). W pewnych sytuacjach jest to pożądane, w innych nie. Podczas gdy inne kolekcje serwują zapytania, nie chcielibyśmy, aby jedna z nich wykorzystała całą przepustowość sieci. Na szczęście wraz z premierą Solr 5.0 dostajemy w nasze ręce możliwość ograniczenia wykorzystania sieci przez replikację Solr.

Do pokazania, jak działa nowa funkcjonalność Solr porównajmy dwie sytuacje – kopiowanie indeksu bez żadnych limitów oraz kopiowanie indeksu podczas ustawionego limitu. W tym celu weźmiemy indeks mający około 2GB i zobaczymy jak wygląda wykorzystanie sieci podczas domyślnej konfiguracji replikacji oraz wtedy, kiedy mamy ustawione limity. Do tego celu wykorzystamy wdrożenie oparte o SolrCloud. Należy jednak pamiętać, iż sposób ten działa także we wdrożeniach opartych o architekturę master – slave.

Replikacja bez limitów

Do replikacji bez limitów wykorzystujemy następującą konfigurację:

<requestHandler name="/replication" class="solr.ReplicationHandler">
</requestHandler>

A tak wygląda wykorzystanie sieci podczas replikacji:

replication_not_throttled

Replikacja z limitami

Do replikacji z limitami wykorzystujemy następującą konfigurację:

<requestHandler name="/replication" class="solr.ReplicationHandler">
 <lst name="defaults">
  <str name="maxWriteMBPerSec">0.1</str>
 </lst>
</requestHandler>

Wykorzystanie sieci w chwili replikacji wygląda następująco:

replication_throttledJak widać różnica pomiędzy dwoma scenariuszami jest znaczna.

Podsumowanie

Jak widać sama konfiguracja jest banalna i działa. Oczywiście działa nie tylko w przypadku wdrożenia opartego o SolrCloud, ale także w bardziej tradycyjnym master – slave. Jedyne czego mi teraz brakuje, to możliwości kontroli za pomocą dedykowanego API, ale to może w przyszłości 🙂

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *