Franta – Občasník malého ajťáka

Domény, Hosting, Cestování

II. Hratky s Elasticem – Ruzna Sprava

Elastic Search

Par dni zpatky jsem narazil bohuzel na diskove limity a ES me prestal indexovat novy data, protoze jsem se dostal na prilis nizkou hladinu volne kapacity. Do tohodle clanku si pridam ruzny admin prikazy, kteryma nejen tyto veci resim, abych to mel nekde pohromade 🙂

Zmena nastaveni replikace

Nejrychlejsi usporou mista je vypnuti replikace u indexu ktere nepotrebujeme, nebo docasne, nez se vyresi pripadne rozsireni clusteru

POST /comhost*/
{
  "settings": {
    "number_of_replicas": 0
  }
}

Zmena nastaveni limitu disku

Dalsi moznosti je upravit nastaveni limitu pri kterem ES uz nedovoli zakladat novy index, resp. data do nej:

PUT _cluster/settings
{
  "transient": {
    "cluster.routing.allocation.disk.watermark.low": "15gb",
    "cluster.routing.allocation.disk.watermark.high": "10gb",
    "cluster.routing.allocation.disk.watermark.flood_stage": "10gb",
    "cluster.info.update.interval": "1m"
  }
}

Odblokovani zamceneho indexu

Kdyz uz dojde k zablokovani/zamceni indexu do Read-Only stavu kvuli mistu na disku, po naslednem uvolneni mista je potreba index odemknout:

PUT /indexname/_settings
{
     "index.blocks.read_only_allow_delete": null
}

Kdyz nam pocet vysledku v agregaci nestaci

Kdyz jsem potreboval zpracovat agregaci obrovskeho mnozstvi dat o velikosti nekolika milionu vysledku, zjistil jsem, ze aggs nemaji neco jako listovani. Pokud mame dostatecne vykonu, lze tedy upravit nastaveni kterym zvysime defaultni limit 10.000 buckets:

PUT _cluster/settings
{
  "persistent": {
    "search.max_buckets": 10000000
  }
}

Pokud mame hodne indexu, ale malo nodu clusteru

Pokud udrzujem napriklad denni logovani mnoha aplikaci po dobu nekolika mesicu, ci let, a ty mame rozlozeny po vice nodech vcetne vlastni replikace, muze nastat situace, ze dalsi index uz nevytvorime, nebot vycerpeme maximalni pocet shards (bloku) na jeden node. Zmenu nastaveni pak muzeme provest napriklad takto:

PUT /_cluster/settings
{
  "persistent": {
    "cluster": {
      "max_shards_per_node" : "128000"
    }
  }
}

Hodnota zde zadana by mela tak nejak odpovidat kapacitnim a vykonovym moznostem poctu nodu 🙂


Urychleni obnovy po padu

Kdyz uz nam to spadne, tak po nahozeni probiha automaticky recovery indexu. Bohuzel pokud je indexu mnoho, probiha obnova celkem pomalu. Muzeme ji tedy (v pripade dostatecnyho vykonu) uspisit naslednovne:

PUT /_cluster/settings
{
  "persistent": {
    "cluster": {
      "routing": {
        "allocation.node_concurrent_recoveries": 500,
        "allocation.node_concurrent_outgoing_recoveries" :500,
        "allocation.node_concurrent_incoming_recoveries" :500,
        "allocation.node_initial_primaries_recoveries": 500
      }
    }
  }
}

Kdyz mame velky dokumenty

Pokud mame velky dokumenty, a nevejdeme se do limitu HTTP POST requestu, muzeme jej navysit:

GET /_cluster/settings
{
  "http": {
    "max_content_length" : "1GB"
  }
}

Prilis mnoho hledani

Pokud mame nejaky aplikace ktery delaji velky objemy vyhledavani, narazime mozna i na limit poctu aktualne bezicich hledani. Ten lze upravit pak takto:

PUT /_cluster/settings
{
  "persistent": {
    "threadpool.search.queue_size": 1000
  }
}

Presunuti bloku mezi nody clusteru

presunuti se hodi pokud clovek potrebuje urychlene neco provest z nejakym nodem clusteru, nebo se mu nelibi jak ES rozhodil nody

POST /_cluster/reroute
{
  "commands": [
    {"move": {
      "index": "index",
      "shard": 19,
      "from_node": "es_data_9",
      "to_node": "es_data_20"
    }}
  ]
}

Pokus o obnovu dat ze zniceneho node clusteru

Bohuzel si uz nepamatuju presne situaci pri ktere se to da a neda pouzit, ale zachranilo me to tehdy pro me cenny data

POST /_cluster/reroute
{
  "commands": [
    {
      "allocate_stale_primary": {
        "index": "indexname",
        "shard": 1,
        "node": "es_data_1",
        "accept_data_loss": true
      }
    }
  ]
}

 

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..