Перегрузка и зависание сервиса 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