SPARQLthon/TogoGenomeUpdate/2018 01
提供:TogoWiki
目次 |
バージョン
- refseq: release86
- uniprot: 2018_01
DBファイルサイズ
440G
更新時期
- 開始: 2018-02-03 23:30
- 終了: 2018-03-20 01:49
トリプル数統計
総トリプル数
11,174,219,395トリプル(約111億)
グラフ一覧とトリプル数
更新の課題
tgupが途中で落ちる
TogoGenomeとUniProtを繋ぐTurtle(tgup)を出力するスクリプトが終盤で落ちる。
2回失敗し、3回目にスクリプト単体で実行すると成功した。
スクリプト: refseq2up.rb
更新処理が全て終わってからトリプル数が不足していることに気がついたので、早めに異常検知する仕組みが必要。
原因
不明。2回とも処理の終盤で落ちており、元々メモリ消費量が激しいため、他の処理と並行するとサーバ状況によっては落ちてしまうのかもしれない。
対処策
できれば全ての対処をしたいが、実行できそうな順に対応策を挙げる。
- 何回か前からfastaファイルのの生成、jbrowseのデータ生成と並行して行う実行にしたが、並行しないように元に戻す。
- エラー処理を入れる。最後の生物種まで処理が終わったかのチェックを入れて、ダメなら処理を進ませない方法を考える。
- サーバに負荷をかけないような設計を見直す。
テキスト検索用データを出力するSPARQLが止まる
テキスト検索用データを取り出すために、isql経由でSPARQLを投げるが、gene関連の処理でisqlからの応答がなく止まることがある。応答がないため処理が進まない。
過去3回、いずれもtaxid:562(大腸菌)で処理が止まっており、そのpidをkillすると先に進む。562だけやり直すと数秒以内に正常にisqlから応答がある。
スクリプト: /data/store/rdf/togogenome/bin/text_search/gene_text_idx.rb
原因
562だけ突出してデータ量が多いのは確かだがisqlから応答がなくなる理由は不明。
checkpointの合間かと思ったが全く関係ない時間帯に起きている。
対処策
- isqlのタイムアウト設定があれば、タイムアウトを発生させてエラーのキャッチ&リトライ処理を入れる。
isqlのタイムアウト設定があった。設定の説明
SQL > set result_timeout = 5000; #5秒でtimeoutする設定
設定動作確認
$ vi count_limit.sql set result_timeout = 5000; SPARQL SELECT (COUNT(*) AS ?cnt) WHERE{ ?s ?p ?o }; $ /data/store/virtuoso7.1/bin/isql (port) dba dba VERBOSE=OFF BANNER=OFF PROMPT=OFF ECHO=OFF BLOBS=ON ERRORS=stderr < count_limit.sql > count_limit.txt *** Error S1TAT: [Virtuoso Driver][Virtuoso Server]RC...: Returning incomplete results, query interrupted by result timeout. Activity: 0 rnd 653.9M seq 0 same seg 0 same pg 0 same par 9.989K disk 84.17K spec disk 0B / 0 me at line 2 of Top-Level: SPARQL SELECT (COUNT(*) AS ?cnt) WHERE{ ?s ?p ?o }
更新スクリプトを修正してタイムアウト5時間で設定(tax:562のデータは正常でも2時間近く掛かっている)。 改変内容
- 上記がダメなら、長引いているisqlの処理をモニタリングする別スクリプトを起動して監視する。