磯部 和広
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]#