Перегрузка и зависание сервиса manticore

Доброго дня!
Периодически наблюдается картина увеличения кол-ва воркеров и не выполняются запросы. Помогает только рестарт сервиса. Есть предположение что проблема в одном RT-индексе, поскольку в момент зависания запрос SHOW INDEX name STATUS проходил по всем RT-индексам, кроме одного (на нем был TIMEOUT).

В query.log в период простоя логов нет (видно по разнице времени последнего запроса перед зависанием и первым после рестарта)
Zabbix показывает постепенное снижение нагрузки на CPU перед зависанием до минимальных и остается на том же уровне (до рестарта). По RAM в этот период соответственно наблюдается постепенное снижение объема данных.

Версия Manticore: Manticore 5.0.2 348514c86@220530 dev (columnar 1.15.4 2fef34e@220522) (secondary 1.15.4 2fef34e@220522)
RT-индекс:

index active_item
{
    type            = rt
    rt_mem_limit    = 4096M

    path            = /var/lib/manticore/data/active_item

    # подключение файла с синонимами
    exceptions        = /etc/manticoresearch/synonyms.txt
    wordforms        = /etc/manticoresearch/wordforms.txt
    stopwords        = /etc/manticoresearch/stopwords.txt


    # Индекс с учетом морфологии
    morphology        = stem_enru
#    morphology        = lemmatize_ru, lemmatize_en

    # Минимальная длина слова для индексации
    min_word_len        = 1

    # Поиск будет по фрагменту слова. Проиндексируем фрагменты вплоть до 3 букв
    min_infix_len        = 3

    # Искать похожие слова
    # expand_keywords = 1

    # Индексироват изначальноую форму слова
    index_exact_words = 1

    # Удаляем html теги
    html_strip = 1

    # приводим все к нижнему регистру
    charset_table     = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+0435, U+451->U+0435

    # индексировать полностью целые числа
    # blend_chars = +, &, U+2C, U+2E

    # приводим запяты к точкам
    # regexp_filter = (\d+)\,(\d+) => \1.\2

    # FULLTEXT
    rt_field        = stock_name # Наименование шаблона
    rt_field         = purchase_name # Наименование выкупа
    rt_field        = category_name # Наименование категрии
    rt_field        = catalog_name # Наименование категрии
    rt_field        = item_name # Наименование товара
    rt_field        = article # Артикль
    rt_field        = item_desc # Описание товара

    rt_field        = characteristic # Ключи характеристик
    rt_field        = tags_name # Значения тегов
    rt_field        = category_keyword # Ключевые слова
    rt_field        = product_name # Название продукта
    rt_field        = trade_mark_id_search2 # /TODO после вылива на прод удалить trade_mark_id_search и этот переименовать

    stored_fields = stock_name, purchase_name, category_name, catalog_name, item_name, article, item_desc, characteristic, tags_name, category_keyword, product_name, trade_mark_id_search2 

    # ATTRIBUTE
    rt_attr_uint    = item_id # ID товара
    rt_attr_uint    = stock_id # ID шаблона
    rt_attr_uint    = purchase_id # ID выкупа
    rt_attr_uint    = delivery_time # время доставки

    rt_attr_uint    = purchase_state_id # Статус закупки
    rt_attr_uint    = category_id # ID категории
    rt_attr_uint    = catalog_id # ID категории
    rt_attr_uint    = org_id # ID организатора

    rt_attr_float    = item_price # Цена товара
    rt_attr_float    = item_sale # Скидка на товар
    rt_attr_float    = item_org_fee # Орг сбор
    rt_attr_float    = item_price_full # Цена товара

    rt_attr_json     = characteristic_ids # Ключи характеристик
    rt_attr_json     = tags_id # Ключи характеристик(сделано специально JSON поскольку индексируются слова >= 3 символа)

    rt_attr_uint    = cnt_order # Количество заказов
    rt_attr_bigint  = consumer_rating # Рейтинг пользователя
    rt_attr_bool    = is_adult # 18+

    rt_attr_bool    = is_bundle # Наличие рядов
    rt_attr_float    = bundle_coef # Общий коэффициент заполненности рядов
    rt_attr_json    = bundle_characteristic_coef # Коэффициент заполенности ряда отдельно по каждой характеристике

    rt_attr_bool    = is_market # Пристрой
    rt_attr_uint    = product_id # ID продукта
    rt_attr_uint    = trade_mark_id # ID бренда/торговой марки
    rt_attr_uint    = trade_mark_id_search # ID бренда/торговой для поиска
    rt_attr_float    = product_avg_rating # средний рейтинг продукта содержащего товар
    rt_attr_uint    = product_review_count # количество отзывов продукта содержащего товар

}

Данные по запросу SHOW STATUS во время зависания:

uptime    410834
connections    297714
maxed_out    0
version    5.0.2 348514c86@220530 dev (columnar 1.15.4 2fef34e@220522) (secondary 1.15.4 2fef34e@220522)
mysql_version    5.0.2 348514c86@220530 dev (columnar 1.15.4 2fef34e@220522) (secondary 1.15.4 2fef34e@220522)
command_search    7218900
command_excerpt    0
command_update    209801
command_keywords    0
command_persist    0
command_status    8
command_flushattrs    0
command_sphinxql    0
command_ping    0
command_delete    1235150
command_set    117
command_insert    0
command_replace    843867
command_commit    0
command_suggest    611780
command_json    0
command_callpq    0
command_cluster    0
command_getfield    0
agent_connect    0
agent_tfo    0
agent_retry    0
queries    8034309
dist_queries    0
workers_total    128
workers_active    972
workers_clients    972
workers_clients_vip    0
work_queue_length    987
query_wall    242963.680
query_cpu    OFF
dist_wall    0.000
dist_local    0.000
dist_wait    0.000
query_reads    OFF
query_readkb    OFF
query_readtime    OFF
avg_query_wall    0.030
avg_query_cpu    OFF
avg_dist_wall    0.000
avg_dist_local    0.000
avg_dist_wait    0.000
avg_query_reads    OFF
avg_query_readkb    OFF
avg_query_readtime    OFF
qcache_max_bytes    16777216
qcache_thresh_msec    3000
qcache_ttl_sec    60
qcache_cached_queries    0
qcache_used_bytes    0
qcache_hits    133
uptime    51944
connections    36567
maxed_out    0
version    5.0.2 348514c86@220530 dev (columnar 1.15.4 2fef34e@220522) (secondary 1.15.4 2fef34e@220522)
mysql_version    5.0.2 348514c86@220530 dev (columnar 1.15.4 2fef34e@220522) (secondary 1.15.4 2fef34e@220522)
command_search    805375
command_excerpt    0
command_update    24920
command_keywords    0
command_persist    0
command_status    9
command_flushattrs    0
command_sphinxql    0
command_ping    0
command_delete    159947
command_set    24
command_insert    0
command_replace    166003
command_commit    0
command_suggest    65636
command_json    0
command_callpq    0
command_cluster    0
command_getfield    0
agent_connect    0
agent_tfo    0
agent_retry    0
queries    909452
dist_queries    0
workers_total    128
workers_active    877
workers_clients    877
workers_clients_vip    0
work_queue_length    891
query_wall    19649.231
query_cpu    OFF
dist_wall    0.000
dist_local    0.000
dist_wait    0.000
query_reads    OFF
query_readkb    OFF
query_readtime    OFF
avg_query_wall    0.021
avg_query_cpu    OFF
avg_dist_wall    0.000
avg_dist_local    0.000
avg_dist_wait    0.000
avg_query_reads    OFF
avg_query_readkb    OFF
avg_query_readtime    OFF
qcache_max_bytes    16777216
qcache_thresh_msec    3000
qcache_ttl_sec    60
qcache_cached_queries    0
qcache_used_bytes    0
qcache_hits    0

Состояние RT-индекса в рабочем состоянии:

Column 1 Column 2
index_type rt
indexed_documents 1590074
indexed_bytes 2608887673
ram_bytes 1915003721
disk_bytes 3438452700
disk_mapped 437748535
disk_mapped_cached 437760000
disk_mapped_doclists 0
disk_mapped_cached_doclists 0
disk_mapped_hitlists 0
disk_mapped_cached_hitlists 0
killed_documents 202208
killed_rate 12.71%
ram_chunk 1477237209
ram_chunk_segments_count 25
disk_chunks 1
mem_limit 4294967296
mem_limit_rate 95.00%
ram_bytes_retired 0
tid 421151
tid_saved 416850
query_time_1min {queries:1027, avg_sec:0.003, min_sec:0.000, max_sec:0.094, pct95_sec:0.019, pct99_sec:0.052}
query_time_5min {queries:3864, avg_sec:0.003, min_sec:0.000, max_sec:0.205, pct95_sec:0.017, pct99_sec:0.039}
query_time_15min {queries:12166, avg_sec:0.003, min_sec:0.000, max_sec:0.893, pct95_sec:0.016, pct99_sec:0.039}
query_time_total {queries:138720, avg_sec:0.003, min_sec:0.000, max_sec:1.153, pct95_sec:0.013, pct99_sec:0.046}
found_rows_1min {queries:1027, avg:3926, min:0, max:964920, pct95:8831, pct99:83196}
found_rows_5min {queries:3864, avg:6177, min:0, max:991612, pct95:7660, pct99:332376}
found_rows_15min {queries:12166, avg:5587, min:0, max:991612, pct95:6333, pct99:278192}
found_rows_total {queries:138720, avg:4785, min:0, max:1417249, pct95:6159, pct99:21608}

По логам последний запрос перед зависанием был ~ в 7:00. Рестарт был ~ в 7:30

Zabbix - CPU


Zabbix - RAM

5.0.2 была выпущена почти 3 года назад. С тех было несколько сотен багфиксов. Думаю, нет смысла пытаться понять, что там за баг, так как есть большая вероятность, что в новой версии его уже нет. Могут быть другие новые, конечно, не без этого, но тем не менее я бы рассмотрел возможность апгрейда до последнего релиза.

Спасибо за ответ!
На новую версию переходим параллельно, но там пока не можем это сделать быстро (проблемы на нашем уровне). Пока этот процесс не завершен, думали что возможно есть какие-то решения для стабилизации текущего ядра. Но если идей нет, то тогда будем ждать исправления после перехода.

Добрый день!
Обновились на новую версию в прошлый четверг. До сегодняшнего утра все работало стабильно, но к сожалению проблема повторилось абсолютно с теми же симптомами что описаны в теме

Добрый. Тогда нужно больше деталей в момент проблемы:

  • show threads option format=all
  • select * from @@system.sessions
  • show status
  • searchd log
  • query log за последние полчаса
  • вывод top
  • вывод dstat 5 за минуту
  • вывод gdb по инструкции отсюда Reporting bugs | Manticore Search Manual
1 Like

Добрый день!
Прилагаю требуемый список деталей (пока кроме gdp)

  1. show threads option format=all
Column 1 Column 2 Column 3 Column 4 E F G H I J K
TID Name Proto State Connection from ConnID This/prev job time Jobs done Thread status Chain Info
36058 work_0 - -1 118us (prev) 172809 idling
36059 work_1 - -1 210us (prev) 172765 idling
36060 work_2 - -1 109us (prev) 172121 idling
36061 work_3 - -1 133us (prev) 172208 idling
36062 work_4 - -1 123us (prev) 171794 idling
36063 work_5 - -1 24us (prev) 171753 idling
36064 work_6 - -1 101us (prev) 171912 idling
36065 work_7 - -1 189us (prev) 171718 idling
36066 work_8 - -1 157us (prev) 173179 idling
36067 work_9 - -1 105us (prev) 172216 idling
36068 work_10 - -1 106us (prev) 172403 idling
36069 work_11 - -1 145us (prev) 171784 idling
36070 work_12 - -1 121us (prev) 172397 idling
36071 work_13 - -1 430us (prev) 171449 idling
36072 work_14 - -1 107us (prev) 172664 idling
36073 work_15 - -1 118us (prev) 171379 idling
36074 work_16 - -1 262us (prev) 172027 idling
36075 work_17 - -1 133us (prev) 172717 idling
36076 work_18 - -1 136us (prev) 173043 idling
36077 work_19 - -1 127us (prev) 172466 idling
36078 work_20 - -1 117us (prev) 173268 idling
36079 work_21 - -1 142us (prev) 173123 idling
36080 work_22 - -1 157us (prev) 172698 idling
36081 work_23 - -1 167us (prev) 171925 idling
36082 work_24 - -1 111us (prev) 172003 idling
36083 work_25 - -1 325us (prev) 171777 idling
36084 work_26 - -1 131us (prev) 172900 idling
36085 work_27 - -1 151us (prev) 172237 idling
36086 work_28 - -1 144us (prev) 172592 idling
36087 work_29 - -1 150us (prev) 172288 idling
36088 work_30 - -1 134us (prev) 172247 idling
36089 work_31 - -1 110us (prev) 172342 idling
36090 work_32 - -1 225us (prev) 172272 idling
36091 work_33 - -1 116us (prev) 173741 idling
36092 work_34 - -1 125us (prev) 173046 idling
36093 work_35 - -1 18us (prev) 172182 idling
36094 work_36 - -1 26us (prev) 172172 idling
36095 work_37 - -1 100us (prev) 173329 idling
36096 work_38 - -1 264us (prev) 173206 idling
36097 work_39 - -1 113us (prev) 173402 idling
36098 work_40 - -1 107us (prev) 172698 idling
36099 work_41 - -1 373us (prev) 172069 idling
36100 work_42 - -1 115us (prev) 172336 idling
36101 work_43 - -1 246us (prev) 173426 idling
36102 work_44 - -1 113us (prev) 172387 idling
36103 work_45 - -1 200us (prev) 172287 idling
36104 work_46 - -1 118us (prev) 171634 idling
36105 work_47 - -1 112us (prev) 172145 idling
36106 work_48 - -1 154us (prev) 172148 idling
36107 work_49 - -1 114us (prev) 171886 idling
36108 work_50 - -1 132us (prev) 170625 idling
36109 work_51 - -1 111us (prev) 171469 idling
36110 work_52 - -1 108us (prev) 171083 idling
36111 work_53 - -1 155us (prev) 171047 idling
36112 work_54 - -1 125us (prev) 172204 idling
36113 work_55 - -1 242us (prev) 172195 idling
36114 work_56 - -1 129us (prev) 172166 idling
36115 work_57 - -1 94us (prev) 172329 idling
36116 work_58 - -1 215us (prev) 171940 idling
36117 work_59 - -1 124us (prev) 172071 idling
36118 work_60 - -1 150us (prev) 171399 idling
36119 work_61 - -1 199us (prev) 171997 idling
36120 work_62 - -1 142us (prev) 171506 idling
36121 work_63 - -1 131us (prev) 171583 idling
36122 work_64 - -1 131us (prev) 171273 idling
36123 work_65 - -1 114us (prev) 171531 idling
36124 work_66 - -1 135us (prev) 172094 idling
36125 work_67 - -1 139us (prev) 173252 idling
36126 work_68 - -1 249us (prev) 171526 idling
36127 work_69 - -1 156us (prev) 171846 idling
36128 work_70 - -1 158us (prev) 171909 idling
36129 work_71 - -1 220us (prev) 172867 idling
36130 work_72 - -1 103us (prev) 173096 idling
36131 work_73 - -1 139us (prev) 173011 idling
36132 work_74 - -1 144us (prev) 172694 idling
36133 work_75 - -1 283us (prev) 173532 idling
36134 work_76 mysql query 10.250.2.176:50119 78031 916us 173282 working Conn /* ApplicationName=DBeaver 25.0.1 - SQLEditor <Script-18.sql> */ show threads option format=all
  1. select * from @@system.sessions
    manticore_session.md.zip (5.6 KB)

  2. show status

Column 1 Column 2
Counter Value
uptime 103624
connections 78032
maxed_out 0
version 6.3.8 d17bd2b6b@24112202 (columnar 2.3.0 88a01c3@24052206) (secondary 2.3.0 88a01c3@24052206) (knn 2.3.0 88a01c3@24052206)
mysql_version 6.3.8 d17bd2b6b@24112202 (columnar 2.3.0 88a01c3@24052206) (secondary 2.3.0 88a01c3@24052206) (knn 2.3.0 88a01c3@24052206)
command_search 2020482
command_excerpt 0
command_update 51974
command_keywords 0
command_persist 0
command_status 1
command_flushattrs 0
command_sphinxql 0
command_ping 0
command_delete 309582
command_set 24
command_insert 0
command_replace 216434
command_commit 0
command_suggest 170734
command_json 0
command_callpq 0
command_cluster 0
command_getfield 0
agent_connect 0
agent_tfo 0
agent_retry 0
queries 2223142
dist_queries 0
workers_total 128
workers_active 862
workers_clients 862
workers_clients_vip 0
work_queue_length 876
load 0.00 0.26 0.92
load_primary 0.00 0.00 0.00
load_secondary 0.00 0.01 0.03
query_wall 29158.328
query_cpu OFF
dist_wall 0.000
dist_local 0.000
dist_wait 0.000
query_reads OFF
query_readkb OFF
query_readtime OFF
avg_query_wall 0.013
avg_query_cpu OFF
avg_dist_wall 0.000
avg_dist_local 0.000
avg_dist_wait 0.000
avg_query_reads OFF
avg_query_readkb OFF
avg_query_readtime OFF
qcache_max_bytes 16777216
qcache_thresh_msec 3000
qcache_ttl_sec 60
qcache_cached_queries 0
qcache_used_bytes 0
qcache_hits 13
  1. searchd log
    searchd.log (9.8 KB)

  2. query log за последние полчаса
    query.log.zip (386.4 KB)

  3. вывод top


  4. вывод dstat 5 за минуту

Забыл указать время сбоя: 13:13-13:14
Рестарт произошел в 13:27
Прилагаю нагрузку CPU по новой машине (около нулевая как раз указывает на период сбоя)

Так как в @@system.sessions запросов много, а в show threads пусто, то значит, что оно зависло где-то и не может передать на выполнение приходящие запросы

в момент зависания запрос SHOW INDEX name STATUS проходил по всем RT-индексам, кроме одного (на нем был TIMEOUT).

если это повторяется, то тем более.

В общем, нужен вывод gdb, чтоб уже на уровне тредов посмотреть, что там происходит.