100% -> 20%

iMacで運用を始めると、待機状態をやめてもCPUの使用率が100%になってしまいました。
これでは、さすがにマズイので根本的な原因をさぐるべくテスト用のDBを作っていろいろ試験をしてみました。
結論としては、いわゆる4Dの雪だるま現象という奴が原因でした。これは一定のコマンドを連続して実行し続けるとスレッドのスケジューラーが対応できずに処理が滞ってしまうというものです。電話でいうところの輻輳ですね。
そこで、適当にディレイをいれることで負荷を軽くするようにしたら、待機状態で20〜50%、待機状態を切れば、10〜20%程度の使用率に下げることができました。細かなチューニングは設定画面で調整できるようにしました。
また、最大接続数というのを設定に設けました。これはクライアントの接続数がこの数に達すると待機状態を止めるものです。
日常接続するクライアント数を指定しておけば、いちいち設定画面を開く必要はなくなりました。

2004 11 18 [バグとの戦いの日々] | 固定リンク | コメント (0) | トラックバック

レセ印刷が遅い

 少し前のバージョンでレセプト印刷が劇的に早くなったと報告しました。でも、その後、原因不明でめちゃくちゃ時間がかかる場合が発生することが確認されました。今のところ確認されているのはMacOS X
環境なのですが、1枚あたり2分程度と絶望的なスピードです。
 発生する条件は特定できず、いきなり改善して数秒の場合もあるし、2分かかる場合もあるというやっかいなバグです。原因は描画に使っている4D Chartなのは確かなのですが、ここ2週間程格闘しましたが、これといった成果はあげられませんでした。
 そこで、根本的な解決策として4D Chartを使わない方法に変えることにして3日前から作業をはじめました。
 すると今度はOS9環境で基本的なPRINT命令で4Dが落ちるという、どうしようもないバグをみつけてしまい、これの解決に昨日までかかってしまいました。まあ、これはあるおまじないをprint命令の前に1行だけ実行すると改善することがわかったのでなんとかなりましけど、こういうバグは止めてほしいものです。
 本題の4D Chartを使わない方法は今日1日かけて完成しました。スピードはさらに早くなって申し分ないのですが、歯式の印刷がいまいちカッコ悪いのが気になります。横棒と縦棒の太さが1ピクセルで太いのが原因です。細くしようとすると後はヘアーラインだけで、これは細すぎて読みにくくなってしまうので却下です。
 4D Chartだと線の太さを0.8とか0.5ピクセルとか選択できるので、かっこいい仕上がりになったのですが、今のところ解決策がないので、まあしょうがないかなって感じです。もちろん、実用上はまったく問題ない部分なんですけどね。
 つい、こういったところにこだわってしまうから、遅れ気味になってしまうのですが.....(^^;

2004 11 17 [バグとの戦いの日々] | 固定リンク | コメント (1) | トラックバック

OS X は急には止まれない。

完全解決って意気込んでいましたけど、また問題発生です。
OS Xではやはり終了できないことがあります。総合情報系のウインドウを最前面に表示させておいて終了させようとすると、終了できません。
ただし多くの場合もう一度Quitをすると正常に終了します。

今のところ特定できたのは、総合情報系のフォームが表示されていると、終了直後に4Dが終了のためだけに起動する特殊なプロセスが起動しないというものです。
たぶん4Dのバグなんですが、今のところ回避策がありません。
OS Xに不具合はウインドウの表示に絡むところが多いです。

2004 09 20 [バグとの戦いの日々] | 固定リンク | コメント (0) | トラックバック