• 締切済み

共有アクセスでの処理負荷

Windows7 32ビット環境で発生している現象なんですが 自作アプリにて特定のファイルを開くアプリを作成しました    (本当にオープン・クローズするだけと思ってもらって構いません) ローカルファイルを使っている分には問題ないのですが 同じファイルを共有ファイル扱い(\\127.0.001\~~~)にてアクセスすると 不定期に15秒ほど時間が必要になる現象が発生しています IPv4のみ使用・インデックスサービス停止などは試してはみたのですが 現象に改善が見られません 動かないわけではないので(不定期に時間がかかるだけ) しばらく放置していたのですがもし原因がわかるのであれば対処したいと思っています これが原因じゃないかと思い当たるものがあれば教えてください   (今はとにかく各種情報を求めます)

みんなの回答

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.5

No.4です。 「アクセス出来ない」ではなくて「アプリケーションを動かしているユーザにネットワーク経由でのアクセス権限があるのかどうか」を確認しているのではないかということです。 あくまでも推測ですので、確証はなにもないです。

koi1234
質問者

お礼

回答ありがとうございます >「アプリケーションを動かしているユーザにネットワーク経由での >アクセス権限があるのかどうか」を確認しているのではないか そういう意味でしたか  誤解したようです そのあたりになるとさすがに内部処理を追わないとわかりそうもないですね 現在当時使っていたはずの環境に切り替えて 改めて現象の確認を始めたところなのですが・・・・・なかなか現象が確認できない (当時はもっと発生頻度が高かったはずなのに) ただエクスプローラでネットワーク表示させて放置してても PC名が出たり消えたりという現象は出ているようです    他の方へのお礼に書いたようにそれが影響してるのかすら定かではない 何かの原因で共有セッションが切れて再接続に時間がかかるのが原因だとすると パケットモニタや他の通信を行って監視しようとするとそれが原因で 現象改善されるのではないかということもあり 調査方法含め悩みどころ満載状態となっています とりあえずもう少し模索してみようかと思っています

全文を見る
すると、全ての回答が全文表示されます。
  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.4

ファイルをオープンするAPIの内部処理で、IPアドレスで指定されたホストにアクセスするための処理に時間がかかっているのではないでしょうか。 ユーザのアクセス権限とか。 そんな気がします。

koi1234
質問者

お礼

回答ありがとうございます >ユーザのアクセス権限とか。 さすがにAPIの内部処理まで追いかけていないのですが 仮にアクセス権限に何かの問題があるとすれば 不定期に時間がかかる  ではなくて  一切アクセスできない という現象になるのではないでしょうか? ちなみに該当フォルダに関しては Everyone で フルアクセス可能にしています

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

質問文ではIPアドレスがループバックアドレスになっているので、実際にはネットワークでのデータの送受信は行われていないんですよね。 私なら、原因の絞り込みのために、 1.ソフト上で時間がかかっている処理を特定 各処理の前後で時間を取得するようにして、処理に一定以上の時間がかかったらログに出力するなどして特定する。 2.パケットをキャプチャしてタイムアウトしていないか調べる 本来不要な名前解決の処理などが原因の場合、ネットワークでの問い合わせがタイムアウトしている可能性があるので、ネットワークのデータをキャプチャしてみる。 などはするかもしれません。

koi1234
質問者

お礼

回答ありがとうございます 1に関しては実際のソースでどの処理に時間かかかるかの確認はしています その結果ファイルオープン関数自体が返ってこない状況であることはわかっています 開発環境はVC 2010 MFC使用 UNICODE FILE *pF; _tfopen_s(&pF, szFileName, _T("rb")); に時間がかかる   という現象です 直ぐに該当環境での確認ができないこともあり (手元の環境は当時のものから変わっている) 記憶があいまいなところもあるのですが 状況としてネットワークのコネクションが切れて 再接続しに行っているような印象を受けました (エクスプローラ見てても不定期にPC名が消えたり再表示されたりしてた記憶あり) 2に関しては方法がよくわからないのでちょっと調べてみたいと思います

全文を見る
すると、全ての回答が全文表示されます。
  • kteds
  • ベストアンサー率42% (1877/4428)
回答No.2

ネットワークが関係しているのでは? そのアプリを実行する前に ipconfig /flushdnsの実行を組み込んでキャッシュをクリアしてみるとどうですか。 (そのアプリ実行の度に毎回行なう必要はないと思いますが、適当なタイミングでクリアしておく) --- ipconfigはコマンドヘルプを参照してください。

koi1234
質問者

お礼

回答ありがとうございます 有効かどうか試してみたいと思います   有効だとしも実対処方法が悩みどころになる気がしますが

全文を見る
すると、全ての回答が全文表示されます。
  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.1

同じPCでローカルホストにアクセスに行く感じですかね。 可能性の最大要因はメモリ不足じゃないかと思います。 作業中のメモリの使用量を調べたいところでしょう。 メモリ不足が原因ですと、不要な常駐ソフトの停止とかの対策はありますが、 OSを64ビットにして、メモリを大きくするのが手っ取り早いですね。

koi1234
質問者

お礼

回答ありがとうございます ただ今回はメモリ要因とは考えられません (ほかにアプリはほとんど動かしていない状態) 開発環境込みで動かしていても タスクマネージャで見て十分余裕があります

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 処理負荷特定で考えられる要因について

    元々他の人が作成したコードなのですが     元はXPで使用 その時はそういった現象が出ていないようにも思えますが     頻度の問題で気が付かなかったのかもしれません     (現在も動いていますが特に問題が出ているということを聞いていません) 現在 Win7上のVC6(SP6)にて ini ファイルへの書き込み処理を行っている関数Aがあり それを関数Bからコールしています 関数の関係は下に書いたようなイメージになります その他複数スレッドなども存在し各種動作を行っています 問題なのは不定期に(頻度も少ない様ですが)関数Aの処理時間が 30秒以上かかることがあるようなのです(ファイルCのチェックにて確認) もちろん通常は0~1秒程度しかかかっていません なぜそのような現象が発生するのか要因がつかめずに悩んでいます    (しかも30秒っていくらなんでもかかりすぎだろう   と) 考えられる可能性がありましたら何でもいいので教えていただけないでしょうか    少しでも情報が欲しいので可能性・想像だけでも構いません    (あまりにも現実離れした想像は困りますが) 関数B {     ファイルCに処理開始時間保存 (普通のファイル書き込み処理 追加モード)     関数A     ファイルCに処理終了時間保存 (普通のファイル書き込み処理 追加モード) } 関数A {    特定 INI ファイルへの書き込み  使っているのは APIや標準関数のみ    sprintf ・ WritePrivateProfileString   関数    セクション・キー名など変えて 50回前後実行します(1つの ini ファイルです) } ウイルスバスターが動いている環境で 上記に類似したコードを動かしたときに 異常に処理負荷がかかったということは経験しています (多分ファイルオープンクローズを繰り返しているためかなと想像しています)    ただしこの時は時々とかいう問題では無いためすぐにわかりました (上記現象は分かっているため)該当PC上ではウイルススキャンの類のソフトは インストールしていません 閉塞LAN構築下に存在しているPCとなります TCP/IP 通信 共有も行っているのでファイヤーフォールは無効にしています あまり関係ないと思いますが DI/Oボード増設を行っています その他については特殊な設定は行っていないと思っていただいて構わないと思います (既に十分特殊という話もあるかもしれません) 一つのファイルへのオープンクローズを一気に50回前後繰り返すという 作りもいまいちなのですが 既に駆動しているプログラム・ ini ファイルの操作の手軽さということでそのような作りになってしまっています 簡単に他の形に置き換えられるのであればそれでもかまわないのですが INIファイルの特定セクションや特定キーの一部データの更新という処置の為 自前でやるのにも現在躊躇している状態です   -> こうすれば簡単に置き換えが可能だって話があればそういった情報でも構いません           全ファイル読み込んだうえでセクションやキーをチェック該当部分を           置き換え(バッファ操作)して最後に一括で書き込めばいい           といったことは分かっています           (それを自前でやってないのがini ファイルの操作の手軽で~~ということです)              悩んでる間に作っちまえ という話もあるもかもしれませんが              (微妙な諸事情もあるので)あえてそこには触れないでください 他に必要な情報があれば必要に応じて追記させていただきます

  • ローカルIPアドレスを使ったファイル共有の安全性

    iPadで同じローカルネットワーク内のWindowsPCのファイルを共有しようと思っています。アプリはVLCやDocumentsで、その際にローカルIPアドレス(IPv4 )を入力します。ここからが聞きたいことなのですが、IPv4を入力して共有すると、共有したファイルを第三者(アプリの管理者など)に見られる、知られるなどの恐れはありますか?IPアドレスはPCの住所のようなものと聞いたのでどうなのかなと思っています。よろしくお願いします。

  • fopenでのエラー

    こんばんわ、長田と申します。  現在WINNTserverのsp6で動作させるアプリを VC6作成しているのですが同一ファイルを一定周期(数秒)で オープン→ファイル処理→クローズと行っていると あるタイミングでファイルオープンエラーが発生してしまいます。  同一アプリケーションをWIN2000で動作させた場合は 発生しないのでOSに問題があるかと疑っている のですが、どなたかこのような現象に心当たりの ある方はいらっしゃらないでしょうか? ちなみに  ファイルオープンー>fopen()  ファイルクローズ->fclose() を使用しています。 宜しくお願いします。

  • ローカルディスクへのアクセス拒否

    WIN8導入の自作PCを初めて作ってみました。PCゲームを導入して楽しんでいましたが、トラブルが発生しゲームソフトを一度アンインストールしました。 その後、再びインストールを試みるとエラー1325が表示(ショート ファイル名としては正しくありません)され、ローカルディスク(C)を開いて確認しようとすると、ローカルディスクへのアクセス自体も拒否されます。当然管理者としてログインしていますが、原因また対処方を教えてくださいませ。

  • 共有フォルダの情報がリアルタイムで反映されない

    社内の別の部署のAさんのPCで発生しているのですが、あるファイルサーバーに保存されている 共有フォルダAはファイルの保存、削除等がリアルタイムに反映するのですが、 同サーバー内の特定の共有フォルダだけはF5キー等の手動更新をしないとファイルの保存、削除等が反映されません。 OSはXP SP2なのですが、他のPC(XP SP2)からだと、問題の共有フォルダでも現象は発生しません。 また、Aさんのローカル上にフォルダを作って同様の作業を実行すると、ちゃんとリアルタイムで反映されます。 細かい環境等、不明な点も多いですが、AさんのPCは最近入れ替えたそうで、スペックは問題ないと思います。 手動更新で現象を回避するのではなく、「何でこのPCだけで現象が発生しているのか知りたい」とのこと。 考えられる原因はございますでしょうか・・・ よろしくお願いします。

  • Pythonでsplit()が効きません…

    ローカルに保存したtxtファイルから文字列を読み込んで、その文字列をsplit()したいのですが何故だか出来ません。 何が原因と考えられるか、教えてください。 >>>f = open('./local.txt', 'w') >>>f.write('1234@5678') >>>f.close() >>>f = open('./local.txt', 'r') >>>print f.read() 1234@5678 >>>a = f.read().split('@')[0] >>> print a >>>b = f.read().split('@')[1] IndexError: list index out of range ※ print a の出力結果は空でした。 f.read().encode('utf-8').split('@')も同様の結果となりました。

  • アクセスカウンタについて

    #!/usr/local/bin/perl # カウントファイルの読み込み open(IN, "<./count.dat"); $count = <IN>; close(IN); ++$count; # カウントファイルへの書き込み open(OUT, ">./count.dat"); print OUT $count; close(OUT); # サーバ出力 print <<END; Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head><title>Perlあくせすかうんたー</title></head> <body> <p>あなたは……$count番目の訪問者です。</p> </body> </html> END 以上のように書きcount.datを作成して同じディレクトリ内においたのですが、カウントが1から増えません。サーバがいけないのか、スプリクトがわるいのかよくわかりません;; ちなみにサーバはlinuxで構築しています。

    • ベストアンサー
    • Perl
  • Perlでテキストファイル読み込み

    基本的な質問ですみません。 サーバ上のテキストファイルを読み込んで ローカルのテキストファイルに書き込むというだけなのですが 何度やってもできません。 以下プログラムですが #!usr/bin/perl open(IN,"http://*****/***/***.txt"); $file = <IN>; close(IN); open(OUT,"> a.txt"); print(OUT "$file"); close(OUT); サーバのアドレスは、URLうってみて見れたのでhttp://***(以下略)であってると思います。 サーバのテキストにはchmodで777と権限を与えました。 プログラムに問題あるのでしょうか。 この場合考えられる原因を教えてください。

    • ベストアンサー
    • Perl
  • ユーザによってアプリの処理速度が異なる???

    ユーザによってアプリの処理速度が異なる??? ローカルユーザとドメインユーザで自作アプリケーションの処理速度が異なり原因が良く分からず困ってます。今までこのような事象になった事がありますか?実際に自作APをローカルユーザでは1秒以内で処理できるが、ドメインユーザでは40秒かかっています。 環境OS:Windows Vista ドメインサーバ:Active Directory ユーザ:Admin権限ありのローカルユーザ    :Admin権限なしのドメインユーザ

  • ファイルの2重に開いた場合の処理(エクセルVBA)

    FileSearchを使って複数のエクセルファイルを順に開きシート内容の更新を行っています。更新すべきファイルは、LAN上のサーバ(LANハードディスク)内のフォルダにおいてありますが、複数の人がファイルを開いて作業を行います。その時、FileSearchで更新作業をしようとすると2重に開く現象が発生します。 ファイルを開く方法は、openメゾッドをworbooksコレクションに対して行っています。 Workbooks.Open Filename:=.FoundFiles(iCount), UpdateLinks:=0で開き、Workbooks(FlieName).Close SaveChanges:=Trueで閉じます。 しかしこのままですと、読み取り専用でファイルを開いてしまい、保存時にコピーを保存するでマクロが止まります。そこで、openメゾッドに、Notify:=Falseを着けると、「読み取り専用で開きますか?」で停止します。次に、On Error GoTo でトラップしようとすると、、「読み取り専用で開きますか?」のダイアログで、いいえを選択するとトラップが出来るのですが、ハイだと当然トラップできません。それよりも、ダイアログが表示されるのには変わりありません。 Displayalerts=Falseとすると、ダイアログは表示されなくなりますが、エラーがトラップ出来なくなります。ファイルの2重で開くのトラップってどうすれば出来るのでしょうか?似たようなものにOpenステートメントもあるようですが、うまく出来ませんでした。どなたか?詳しい方教えて頂けませんでしょうか?宜しくお願い致します。 目的としては、2重に開く現象となったファイル名をThisworkbookのシートに一覧保存してあとで対象のものだけ処理を行うようにしたいです。また、2重に開いたときに表示される使用者名もゲットしたいです。 宜しくお願い致します。