岡三RSSのフリーズ対策(その2)

以前の記事『岡三RSSのフリーズ対策』で、
岡三RSSのメモリー使用量を5分毎にチェックし、
900MBを超えたら岡三RSSを再起動させていることを紹介した。
(もちろん、自動で)

最近のコロナショック相場では、しょっちゅう自動再起動がかかっている。
多いときで、日中で2~3回、夜間で3~4回程度。

このような状況では、とても自動売買は運用できない。
今年に入って、気合いを入れて開発した自動売買ロジックだが、
まだ本番リリースできずにいる。

岡三RSSを使いだした当初から思っていたが、
「これだけ激しくメモリー使用量が増えていくアプリケーションは、根本的にプログラム設計をミスっている。」
というのが正直な感想。
せめて、1セッションくらいもちこたえてほしい。

愚痴はこのくらいにして…

今回の記事では、
岡三RSSのフリーズ対策について、最近の相場状況で試してみたこと、気づいたことなどを紹介しようと思う。

まず、便利ツール、「岡三RSSモニター」を作った。下図。

これは、岡三RSS、Excel、自作ツールのメモリー使用量をモニタリングするツール。
そして、

  • 各プロセスの優先度の変更
  • 岡三RSSの再起動(強制終了→起動)、起動(起動していないとき)
  • Excelの再起動(強制終了→起動)、起動(起動していないとき)
  • 自作ツールの強制終了、起動(起動していないとき)

をボタンクリックでできるようにした。

Windowsに標準搭載されている「タスクマネージャー」を使えば、
メモリー使用量が分かるし、プロセスの優先度変更、プロセスの強制終了もできるが、
邪魔にならない画面サイズで、ワンクリックで実行できるようにした。

プロセスの優先度変更については、

  • 優先度を上げることにより、メモリー使用量の上昇が抑えられるのではないか

と思い実験してみた。

Windowsでは、プロセス優先度を次の6段階で設定できるようになっている。
プログラムで設定できるし、タスクマネージャーでも設定(変更)できる。

  • リアルタイム(RealTime)
  • 高(High)
  • 通常以上(AboveNormal)
  • 通常(Normal)
  • 通常以下(BelowNormal)
  • 低(Idle)

デフォルトは、「通常」。
上図の例では、岡三RSSとExcelの優先度を「高」に設定している。

さて、どうやって効果のほどを検証するのか。
なかなか悩ましいが、
下記の4パターンで、
本番用マシンと開発用マシンを並行運用し、
定期的にメモリー使用量を相対比較し、
メモリー使用量の差が広がっていくのかどうか観察した。
なお、優先度「リアルタイム」はちょっと怖いのでやらなかった。

  • パターン1  本番用:通常  開発用:通常
  • パターン2  本番用:高   開発用:通常
  • パターン3  本番用:通常  開発用:高
  • パターン4  本番用:高   開発用:高

結果、
優先度を「高」にすることの効果がまったく見られなかった。
(詳細は割愛する)

なので、余計なことはせず、優先度はデフォルトのまま「通常」で運用することとした。

さて、メモリー使用量を観察していて気付いたのだが、
どうも、岡三RSSのメモリー使用量が600MBを超えると再起動したほうが良さそうだ。

相場が落ち着いていれば、岡三RSSの処理が遅れることは無いが、
急騰・急落が続けば、メモリー使用量がグングン増えていく。
使用量が少ないときとの増え方が違う。
そして、700MB前後から処理の遅れが顕著になる。
(状況によっては、もっと前から)
板(FBORD関数)は結構頑張って更新しているが、
FQUOTEや、FTICK、FCANDLEの動作が使い物にならないくらいカクカクになる。

今回、新たなツールを作ったのを機会に、岡三RSSの自動再起動の運用を下記のように変更することとした。

  • 監視ツール    : データ収集ツール → 岡三RSSモニターツール(今回作成)
  • モニタリング周期 : 5分 → 3秒
  • しきい値     : 900MB(固定) → 600MB(可変)

また、以前の記事『岡三RSSのフリーズ対策』で、

  • Excelを再起動させずとも、岡三RSS(アドイン)を再起動すれば、復旧する

と紹介したが、
どうもタイミングが悪ければ、Excelが固まったままとなるようだ。
そこで、岡三RSS再起動直後に「ヘルシーチェック」を入れることとした。
内容は、以前の記事『ヘルシーチェック』で紹介した内容と同じ。
このときは、誤判定だらけという結果だったが、
岡三RSS再起動直後に1回だけ実施すれば十分。
ヘルシーチェックがNGであれば、Excelを再起動するようにした。
この処理も、データ収集ツールからモニターツールに移植した。

ツールをポコポコ増やすのはあまり良くないのだが、
トレードツールとデータ収集ツールはExcelと頻繁にやりとりしているツールであり、
これらのツールも連鎖的にコケてしまうことも考えられるので、
すぐにKillできるように、システム全体の状況を監視するツールとして、
今回のツールを作成した。

様子を見て、ツールの構成(システム構成)を見直そうと思う。

<広告>

TOP