[groonga-dev,01293] mroongaの検索時エラーについて

Back to archive index

磯部 和広 k-iso****@rozet*****
2013年 4月 9日 (火) 20:47:48 JST


いつもお世話になっております。

現在、首題の現象が起きています。
お知恵を貸して頂けないでしょうか。

■背景■

現在、約2.1GBのテキストがそれぞれ格納されたファイル120個を原料に、
120個のmroongaのテーブルを作成して使用しております。

1行の長さがまちまちな為、各テーブルの行数はまちまちです。

テーブル名は連番となっていて、定義は下記のようになっています。

CREATE TABLE `CORPUS_JA_000` (
`JA_TEXT` text NOT NULL,
FULLTEXT KEY `JA_TEXT_INDEX` (`JA_TEXT`)
) ENGINE=mroonga DEFAULT CHARSET=utf8;

■やっている事■

同じSQL文をテーブル名のみ変えて作成し、セミコロンで区切って連結します。

例えば、下記のような感じです。

select JA_TEXT from CORPUS_JA_000 where match(JA_TEXT) against('"雪風"'
in boolean mode);
select JA_TEXT from CORPUS_JA_001 where match(JA_TEXT) against('"雪風"'
in boolean mode);
<中略>
select JA_TEXT from CORPUS_JA_118 where match(JA_TEXT) against('"雪風"'
in boolean mode);
select JA_TEXT from CORPUS_JA_119 where match(JA_TEXT) against('"雪風"'
in boolean mode);

これを実行すると、検索語に該当する全ての行が得られます。

■首題の現象■

通常は問題無く検索できるのですが
 バッチ処理にして、複数の検索語を次々検索する
という事を行いますと、時々エラーが出ます。

概ね、3回検索するとエラーが1回出る感じです。

120行(テーブル)のSQL文を1回で、ではなく、60行を2回にもしてみたのですが
起きる頻度は変わりませんでした。

エラーが出ると、SQLを再実行してもエラーとなるのですが
別のSQLを流すと成功します。

いつもだいたい同じテーブル(110)あたりでエラーとなるのですが
エラーとなったテーブル単体で検索するとエラーとならず、
バッチ処理内での聞く順番を変えるとエラーなく検索出来たりしますので
 ・検索語やテーブルには問題が無い
 ・mroonga側の内部処理に問題がある
のだと思います。

どうも
 短時間で複数のテーブルに検索を発行すると、
 mroonga側で何らかのメモリ処理が追い付かずエラー
となっているような動きです。

このため、現在は
 エラーが起きたらsleepしてから「SQLを変えて」再実行
という処理で逃げています。

■エラー時のgroonga.log■

下記のような感じです。

[root @ PMJ01 mysql]# nl groonga.log | head -n 50
1 2013-04-09 13:15:59.761717|n|ef2947e0|mroonga 3.02 started.
2 2013-04-09 13:15:59.761732|n|ef2947e0|log level is 'NONE'
3 2013-04-09 13:16:40.930766|n|45798700|mroonga 3.02 deinit
4 2013-04-09 13:16:40.931058|n|45798700|grn_fin (0)
5 2013-04-09 13:16:44.440332|n|a00107e0|mroonga 3.02 started.
6 2013-04-09 13:16:44.440346|n|a00107e0|log level is 'NONE'
7 2013-04-09
13:25:06.629196|A|f6583700|mmap(4194304,653,499122176)=Cannot allocate
memory <304380575744>
8 2013-04-09
13:25:06.630286|A|f6583700|/usr/lib64/libgroonga.so.0(+0x1265cb)
[0x7f550dad45cb]
9 2013-04-09
13:25:06.630294|A|f6583700|/usr/lib64/libgroonga.so.0(grn_io_seg_map_+0xb8)
[0x7f550dad7f38]
10 2013-04-09
13:25:06.630299|A|f6583700|/usr/lib64/libgroonga.so.0(grn_io_win_map2+0xf40)
[0x7f550dad9890]
11 2013-04-09
13:25:06.630305|A|f6583700|/usr/lib64/libgroonga.so.0(+0x1a554c)
[0x7f550db5354c]
12 2013-04-09
13:25:06.630310|A|f6583700|/usr/lib64/libgroonga.so.0(grn_ja_ref+0x34)
[0x7f550db53c14]
13 2013-04-09
13:25:06.630314|A|f6583700|/usr/lib64/libgroonga.so.0(grn_obj_get_value_+0x353)
[0x7f550d9dcbb3]
14 2013-04-09
13:25:06.630318|A|f6583700|/usr/lib64/mysql/plugin/ha_mroonga.so(_ZN10ha_mroonga20storage_store_fieldsEPhj+0x288)
[0x7f550dde43f8]
15 2013-04-09
13:25:06.630322|A|f6583700|/usr/lib64/mysql/plugin/ha_mroonga.so(_ZN10ha_mroonga15storage_ft_readEPh+0x186)
[0x7f550dde83a6]
16 2013-04-09 13:25:06.630326|A|f6583700|/usr/libexec/mysqld() [0x59a9c8]
17 2013-04-09
13:25:06.630330|A|f6583700|/usr/libexec/mysqld(_Z10sub_selectP4JOINP13st_join_tableb+0x71)
[0x5a08f1]
18 2013-04-09 13:25:06.630334|A|f6583700|/usr/libexec/mysqld() [0x5a5dd7]
19 2013-04-09
13:25:06.630338|A|f6583700|/usr/libexec/mysqld(_ZN4JOIN4execEv+0xc38)
[0x5b78a8]
20 2013-04-09
13:25:06.630342|A|f6583700|/usr/libexec/mysqld(_Z12mysql_selectP3THDPPP4ItemP10TABLE_LISTjR4ListIS1_ES2_jP8st_orderSB_S2_SB_yP13select_resultP18st_select_lex_unitP13st_select_lex+0x162)
[0x5b8f92]
21 2013-04-09
13:25:06.630345|A|f6583700|/usr/libexec/mysqld(_Z13handle_selectP3THDP3LEXP13select_resultm+0x174)
[0x5b9a14]
22 2013-04-09 13:25:06.630349|A|f6583700|/usr/libexec/mysqld() [0x57b16d]
23 2013-04-09
13:25:06.630353|A|f6583700|/usr/libexec/mysqld(_Z21mysql_execute_commandP3THD+0x10d5)
[0x57f585]
24 2013-04-09 13:25:06.630357|C|f6583700|mmap failed!!! in
GRN_IO_SEG_REF(0x7f2908bbdf00, 630, 1)
25 2013-04-09
13:25:06.630375|A|f6583700|mmap(4194304,653,499122176)=Cannot allocate
memory <304380575744>
26 2013-04-09
13:25:06.631357|A|f6583700|/usr/lib64/libgroonga.so.0(+0x1265cb)
[0x7f550dad45cb]
27 2013-04-09
13:25:06.631364|A|f6583700|/usr/lib64/libgroonga.so.0(grn_io_seg_map_+0xb8)
[0x7f550dad7f38]
28 2013-04-09
13:25:06.631368|A|f6583700|/usr/lib64/libgroonga.so.0(grn_io_win_map2+0xf40)
[0x7f550dad9890]
29 2013-04-09
13:25:06.631372|A|f6583700|/usr/lib64/libgroonga.so.0(+0x1a554c)
[0x7f550db5354c]
30 2013-04-09
13:25:06.631376|A|f6583700|/usr/lib64/libgroonga.so.0(grn_ja_ref+0x34)
[0x7f550db53c14]
31 2013-04-09
13:25:06.631380|A|f6583700|/usr/lib64/libgroonga.so.0(grn_obj_get_value_+0x353)
[0x7f550d9dcbb3]
32 2013-04-09
13:25:06.631384|A|f6583700|/usr/lib64/mysql/plugin/ha_mroonga.so(_ZN10ha_mroonga20storage_store_fieldsEPhj+0x288)
[0x7f550dde43f8]
33 2013-04-09
13:25:06.631388|A|f6583700|/usr/lib64/mysql/plugin/ha_mroonga.so(_ZN10ha_mroonga15storage_ft_readEPh+0x186)
[0x7f550dde83a6]
34 2013-04-09 13:25:06.631392|A|f6583700|/usr/libexec/mysqld() [0x59a9c8]
35 2013-04-09
13:25:06.631395|A|f6583700|/usr/libexec/mysqld(_Z10sub_selectP4JOINP13st_join_tableb+0x71)
[0x5a08f1]
36 2013-04-09 13:25:06.631399|A|f6583700|/usr/libexec/mysqld() [0x5a5dd7]
37 2013-04-09
13:25:06.631403|A|f6583700|/usr/libexec/mysqld(_ZN4JOIN4execEv+0xc38)
[0x5b78a8]
38 2013-04-09
13:25:06.631407|A|f6583700|/usr/libexec/mysqld(_Z12mysql_selectP3THDPPP4ItemP10TABLE_LISTjR4ListIS1_ES2_jP8st_orderSB_S2_SB_yP13select_resultP18st_select_lex_unitP13st_select_lex+0x162)
[0x5b8f92]
39 2013-04-09
13:25:06.631411|A|f6583700|/usr/libexec/mysqld(_Z13handle_selectP3THDP3LEXP13select_resultm+0x174)
[0x5b9a14]
40 2013-04-09 13:25:06.631414|A|f6583700|/usr/libexec/mysqld() [0x57b16d]
41 2013-04-09
13:25:06.631418|A|f6583700|/usr/libexec/mysqld(_Z21mysql_execute_commandP3THD+0x10d5)
[0x57f585]
42 2013-04-09 13:25:06.631430|C|f6583700|mmap failed!!! in
GRN_IO_SEG_REF(0x7f2908bbdf00, 630, 1)
43 2013-04-09
13:25:06.631442|A|f6583700|mmap(4194304,653,499122176)=Cannot allocate
memory <304380575744>
44 2013-04-09
13:25:06.632431|A|f6583700|/usr/lib64/libgroonga.so.0(+0x1265cb)
[0x7f550dad45cb]
45 2013-04-09
13:25:06.632437|A|f6583700|/usr/lib64/libgroonga.so.0(grn_io_seg_map_+0xb8)
[0x7f550dad7f38]
46 2013-04-09
13:25:06.632441|A|f6583700|/usr/lib64/libgroonga.so.0(grn_io_win_map2+0xf40)
[0x7f550dad9890]
47 2013-04-09
13:25:06.632445|A|f6583700|/usr/lib64/libgroonga.so.0(+0x1a554c)
[0x7f550db5354c]
48 2013-04-09
13:25:06.632449|A|f6583700|/usr/lib64/libgroonga.so.0(grn_ja_ref+0x34)
[0x7f550db53c14]
49 2013-04-09
13:25:06.632452|A|f6583700|/usr/lib64/libgroonga.so.0(grn_obj_get_value_+0x353)
[0x7f550d9dcbb3]
50 2013-04-09
13:25:06.632456|A|f6583700|/usr/lib64/mysql/plugin/ha_mroonga.so(_ZN10ha_mroonga20storage_store_fieldsEPhj+0x288)
[0x7f550dde43f8]
[root @ PMJ01 mysql]#

[root @ PMJ01 mysql]# nl groonga.log | tail -n 50
757141 2013-04-09
20:30:35.930827|A|205d4700|/usr/lib64/libgroonga.so.0(+0x589a6)
[0x7f87c5eca9a6]
757142 2013-04-09
20:30:35.930831|A|205d4700|/usr/lib64/libgroonga.so.0(grn_expr_get_or_add_var+0x34)
[0x7f87c5ed18d4]
757143 2013-04-09
20:30:35.930835|A|205d4700|/usr/lib64/libgroonga.so.0(grn_expr_add_var+0x52)
[0x7f87c5ed1a32]
757144 2013-04-09
20:30:35.930838|A|205d4700|/usr/lib64/mysql/plugin/ha_mroonga.so(_ZN10ha_mroonga26generic_ft_init_ext_selectEjjP6String+0x26f)
[0x7f8735de8a2f]
757145 2013-04-09
20:30:35.930842|A|205d4700|/usr/lib64/mysql/plugin/ha_mroonga.so(_ZN10ha_mroonga19generic_ft_init_extEjjP6String+0x9e)
[0x7f8735de8e3e]
757146 2013-04-09
20:30:35.930846|A|205d4700|/usr/lib64/mysql/plugin/ha_mroonga.so(_ZN10ha_mroonga19storage_ft_init_extEjjP6String+0x9)
[0x7f8735de9009]
757147 2013-04-09
20:30:35.930850|A|205d4700|/usr/libexec/mysqld(_ZN15Item_func_match11init_searchEb+0x17e)
[0x6b08ae]
757148 2013-04-09
20:30:35.930854|A|205d4700|/usr/libexec/mysqld(_Z12init_ftfuncsP3THDP13st_select_lexb+0x57)
[0x545ef7]
757149 2013-04-09
20:30:35.930858|A|205d4700|/usr/libexec/mysqld(_ZN4JOIN8optimizeEv+0x2a18)
[0x5b2bf8]
757150 2013-04-09
20:30:35.930861|A|205d4700|/usr/libexec/mysqld(_Z12mysql_selectP3THDPPP4ItemP10TABLE_LISTjR4ListIS1_ES2_jP8st_orderSB_S2_SB_yP13select_resultP18st_select_lex_unitP13st_select_lex+0x105)
[0x5b8f35]
757151 2013-04-09
20:30:35.930865|A|205d4700|/usr/libexec/mysqld(_Z13handle_selectP3THDP3LEXP13select_resultm+0x174)
[0x5b9a14]
757152 2013-04-09 20:30:35.930870|C|205d4700|mmap failed!!!! in
GRN_IO_SEG_REF(0x7f840597c7b0, 1)
757153 2013-04-09 20:30:35.930880|A|205d4700|mmap(4194304,-1,0)=Cannot
allocate memory <204989923328>
757154 2013-04-09
20:30:35.931593|A|205d4700|/usr/lib64/libgroonga.so.0(+0x1265cb)
[0x7f87c5f985cb]
757155 2013-04-09
20:30:35.931600|A|205d4700|/usr/lib64/libgroonga.so.0(grn_io_seg_map_+0x166)
[0x7f87c5f9bfe6]
757156 2013-04-09
20:30:35.931604|A|205d4700|/usr/lib64/libgroonga.so.0(grn_io_segment_alloc+0x6e0)
[0x7f87c5f9dfc0]
757157 2013-04-09
20:30:35.931608|A|205d4700|/usr/lib64/libgroonga.so.0(+0xf8eb3)
[0x7f87c5f6aeb3]
757158 2013-04-09
20:30:35.931612|A|205d4700|/usr/lib64/libgroonga.so.0(grn_hash_add+0x8c0) [0x7f87c5f6f1a0]
757159 2013-04-09
20:30:35.931616|A|205d4700|/usr/lib64/libgroonga.so.0(+0x589a6)
[0x7f87c5eca9a6]
757160 2013-04-09
20:30:35.931619|A|205d4700|/usr/lib64/libgroonga.so.0(grn_expr_get_var_by_offset+0x26)
[0x7f87c5ecb356]
757161 2013-04-09
20:30:35.931623|A|205d4700|/usr/lib64/libgroonga.so.0(grn_expr_parse+0x6e)
[0x7f87c5ed3e6e]
757162 2013-04-09
20:30:35.931627|A|205d4700|/usr/lib64/mysql/plugin/ha_mroonga.so(_ZN10ha_mroonga26generic_ft_init_ext_selectEjjP6String+0x310)
[0x7f8735de8ad0]
757163 2013-04-09
20:30:35.931631|A|205d4700|/usr/lib64/mysql/plugin/ha_mroonga.so(_ZN10ha_mroonga19generic_ft_init_extEjjP6String+0x9e)
[0x7f8735de8e3e]
757164 2013-04-09
20:30:35.931635|A|205d4700|/usr/lib64/mysql/plugin/ha_mroonga.so(_ZN10ha_mroonga19storage_ft_init_extEjjP6String+0x9)
[0x7f8735de9009]
757165 2013-04-09
20:30:35.931639|A|205d4700|/usr/libexec/mysqld(_ZN15Item_func_match11init_searchEb+0x17e)
[0x6b08ae]
757166 2013-04-09
20:30:35.931642|A|205d4700|/usr/libexec/mysqld(_Z12init_ftfuncsP3THDP13st_select_lexb+0x57)
[0x545ef7]
757167 2013-04-09
20:30:35.931646|A|205d4700|/usr/libexec/mysqld(_ZN4JOIN8optimizeEv+0x2a18)
[0x5b2bf8]
757168 2013-04-09
20:30:35.931650|A|205d4700|/usr/libexec/mysqld(_Z12mysql_selectP3THDPPP4ItemP10TABLE_LISTjR4ListIS1_ES2_jP8st_orderSB_S2_SB_yP13select_resultP18st_select_lex_unitP13st_select_lex+0x105)
[0x5b8f35]
757169 2013-04-09
20:30:35.931654|A|205d4700|/usr/libexec/mysqld(_Z13handle_selectP3THDP3LEXP13select_resultm+0x174)
[0x5b9a14]
757170 2013-04-09 20:30:35.931658|C|205d4700|mmap failed!!!! in
GRN_IO_SEG_REF(0x7f840597c7b0, 1)
757171 2013-04-09 20:30:35.931663|e|205d4700|variable is not defined
correctly
757172 2013-04-09
20:30:35.932995|e|205d4700|/usr/lib64/libgroonga.so.0(grn_expr_parse+0x5b6)
[0x7f87c5ed43b6]
757173 2013-04-09
20:30:35.933002|e|205d4700|/usr/lib64/mysql/plugin/ha_mroonga.so(_ZN10ha_mroonga26generic_ft_init_ext_selectEjjP6String+0x310)
[0x7f8735de8ad0]
757174 2013-04-09
20:30:35.933006|e|205d4700|/usr/lib64/mysql/plugin/ha_mroonga.so(_ZN10ha_mroonga19generic_ft_init_extEjjP6String+0x9e)
[0x7f8735de8e3e]
757175 2013-04-09
20:30:35.933010|e|205d4700|/usr/lib64/mysql/plugin/ha_mroonga.so(_ZN10ha_mroonga19storage_ft_init_extEjjP6String+0x9)
[0x7f8735de9009]
757176 2013-04-09
20:30:35.933014|e|205d4700|/usr/libexec/mysqld(_ZN15Item_func_match11init_searchEb+0x17e)
[0x6b08ae]
757177 2013-04-09
20:30:35.933018|e|205d4700|/usr/libexec/mysqld(_Z12init_ftfuncsP3THDP13st_select_lexb+0x57)
[0x545ef7]
757178 2013-04-09
20:30:35.933022|e|205d4700|/usr/libexec/mysqld(_ZN4JOIN8optimizeEv+0x2a18)
[0x5b2bf8]
757179 2013-04-09
20:30:35.933026|e|205d4700|/usr/libexec/mysqld(_Z12mysql_selectP3THDPPP4ItemP10TABLE_LISTjR4ListIS1_ES2_jP8st_orderSB_S2_SB_yP13select_resultP18st_select_lex_unitP13st_select_lex+0x105)
[0x5b8f35]
757180 2013-04-09
20:30:35.933030|e|205d4700|/usr/libexec/mysqld(_Z13handle_selectP3THDP3LEXP13select_resultm+0x174)
[0x5b9a14]
757181 2013-04-09 20:30:35.933034|e|205d4700|/usr/libexec/mysqld()
[0x57b16d]
757182 2013-04-09
20:30:35.933037|e|205d4700|/usr/libexec/mysqld(_Z21mysql_execute_commandP3THD+0x10d5)
[0x57f585]
757183 2013-04-09
20:30:35.933041|e|205d4700|/usr/libexec/mysqld(_Z11mysql_parseP3THDPcjP12Parser_state+0x19d)
[0x582b5d]
757184 2013-04-09
20:30:35.933045|e|205d4700|/usr/libexec/mysqld(_Z16dispatch_command19enum_server_commandP3THDPcj+0x12fd)
[0x58460d]
757185 2013-04-09
20:30:35.933049|e|205d4700|/usr/libexec/mysqld(_Z24do_handle_one_connectionP3THD+0xd2)
[0x612372]
757186 2013-04-09
20:30:35.933052|e|205d4700|/usr/libexec/mysqld(handle_one_connection+0x50)
[0x612480]
757187 2013-04-09
20:30:35.933056|e|205d4700|/lib64/libpthread.so.0(+0x7851) [0x7f87c9e26851]
757188 2013-04-09 20:30:35.933072|e|205d4700|failed to parse fulltext
search keyword: <"メタアナリシス">: <variable is not defined correctly>
757189 2013-04-09 20:30:37.648375|n|e4fec7e0|mroonga 3.02 started.
757190 2013-04-09 20:30:37.648387|n|e4fec7e0|log level is 'NONE'
[root @ PMJ01 mysql]#

どうも、
 mmap failed!!!! in GRN_IO_SEG_REF(0x7f840597c7b0, 1)
がキーのようなので、パターンを調べてみました。

[root @ PMJ01 mysql]# grep GRN_IO_SEG_REF groonga.log | cut -d '|' -f 2- |
sort | uniq -c | sort -nr | head -n 20
4524 C|e05d4700|mmap failed!!!! in GRN_IO_SEG_REF(0x7ef135995d50, 0)
4524 C|82cc2700|mmap failed!!!! in GRN_IO_SEG_REF(0x7f1a9d97be50, 0)
3074 C|bc1ee700|mmap failed!!!! in GRN_IO_SEG_REF(0x7edfa5995d50, 0)
2917 C|dc1de700|mmap failed!!!! in GRN_IO_SEG_REF(0x7f8761995d50, 0)
2315 C|ac263700|mmap failed!!!! in GRN_IO_SEG_REF(0x7f23f9995d50, 1)
519 C|0ecc2700|mmap failed!!!! in GRN_IO_SEG_REF(0x7ef179995d50, 0)
361 C|dc1de700|mmap failed!!! in GRN_IO_SEG_REF(0x7fb4a1e07d70, 261, 1)
324 C|fc2d6700|mmap failed!!! in GRN_IO_SEG_REF(0x7facc4bbe2f0, 256, 1)
324 C|f8b76700|mmap failed!!! in GRN_IO_SEG_REF(0x7fe877e3a9f0, 256, 1)
324 C|e40c4700|mmap failed!!! in GRN_IO_SEG_REF(0x7f9f50bbe2f0, 256, 1)
324 C|82cc2700|mmap failed!!! in GRN_IO_SEG_REF(0x7f1df0bbe2f0, 256, 1)
324 C|12844700|mmap failed!!! in GRN_IO_SEG_REF(0x7ef87cbbe2f0, 256, 1)
324 C|0f7d5700|mmap failed!!! in GRN_IO_SEG_REF(0x7f3affe3a9f0, 256, 1)
324 C|069df700|mmap failed!!! in GRN_IO_SEG_REF(0x7fc074bbe2f0, 256, 1)
238 C|fc2d6700|mmap failed!!! in GRN_IO_SEG_REF(0x7facc4bbe2f0, 252, 1)
238 C|f8b76700|mmap failed!!! in GRN_IO_SEG_REF(0x7fe877e3a9f0, 252, 1)
238 C|e40c4700|mmap failed!!! in GRN_IO_SEG_REF(0x7f9f50bbe2f0, 252, 1)
238 C|82cc2700|mmap failed!!! in GRN_IO_SEG_REF(0x7f1df0bbe2f0, 252, 1)
238 C|12844700|mmap failed!!! in GRN_IO_SEG_REF(0x7ef87cbbe2f0, 252, 1)
238 C|0f7d5700|mmap failed!!! in GRN_IO_SEG_REF(0x7f3affe3a9f0, 252, 1)
[root @ PMJ01 mysql]#

似たようなアドレスですが、同じアドレスではありませんでした。


メモリの使用状況は下記です。

[root @ PMJ01 mysql]# free -m
total used free shared buffers cached
Mem: 32020 31181 839 0 15 29788
-/+ buffers/cache: 1378 30642
Swap: 16079 0 16079
[root @ PMJ01 mysql]#




groonga-dev メーリングリストの案内
Back to archive index