• 締切済み

ネットワークドライブでの保存が遅い

Windowsネットワークで,ネットワークドライブ内のファイルの保存時に,数秒フリーズした状態になり保存に時間がかかるようになってしまいました。 不具合が発生するケースは,Windows NTsever内の共有ファイルで,ネットワークファイル内のファイルの場合です。 どのクライアントからも同様の症状が発生します。 パケットをキャプチャしたところ,以下のところで遅延が発生していることが分かりました。 ------(省略)------- netbios-ssn > 2546[ACK] seq=13385 ack=850850 win=8473 len=0 (約1秒後) NT create AndX Response, Error: STATUS_SHARING_VIOLATION Close Request, FID: 0x800f Close Response NT Create andX Request, Path:(ファイルのパス) netbios-ssn > 2546[ACK] seq=13463 ack=851039 win=8284 len=0 (約1秒後) NT create AndX Response, Error: STATUS_SHARING_VIOLATION Close Request, FID: 0x900a Close Response ------(省略)------- このエラーが何を示しているかが分かりません。 具体的にどのような対策が必要でしょうか。 なお,フルパス(\\サーバ名称\XXX\XXX)でファイルを開くと同遅延は発生しないようです。 最近の変化点は,Windows2000serverの追加導入ですが,導入後に発生したかどうかは分かりません。

みんなの回答

  • stsu
  • ベストアンサー率62% (83/132)
回答No.1

NTseverですか。少々古いのでMSのサイトでも情報が見つからないかも知れません。 気休め程度かも知れませんが、一度サーバを再起動させてみては如何でしょう。 # 可能ならば2000サーバ以降へのリプレースを推奨します。

y20060129
質問者

お礼

再起動も試みましたが,変化は見られませんでした。 追加導入した2000サーバもネットワークドライブからファイルを使用すると同症状が発生しました。 確かにNTは古いので,リプレースは今後の課題となりますね。

関連するQ&A

  • イラストレーターのファイルが保存できません。

    「イラストレーターで作成したファイルを、上書き保存するとき、Adobe PDFファイル形式に問題があります  Sharing violation. 」  と、いったエラーメッセージがでて保存できません。ファイル名を変えて保存すれば問題なく保存できます。   対処方法をおしえてください。依然 ネットワークを介しての保存で問題点があるのではとのご回答をいただきましたが、ローカルでも問題が発生しました。  どこに問題があるのでしょうか?

  • netbios-ssnのSYN,ACKについて

    異なるネットワークのファイル共有を下記構成で検証しています。 ルータ1(LAN:192.168.0.1, WAN:インターネット)  |↑静的ルールで192.168.1.0/26のGWとして192.168.0.222を設定  | SWHUB-PC1(192.168.0.6)  |  |  |  PC2(192.168.0.7)  ルータ2(LAN:192.168.0.222, WAN:192.168.1.43)  |↑NAT無効、ファイアウォール無効  | PC3(192.168.1.4) ここで各PCの共有フォルダアクセスを試しました。 (1)192.168.0.6のexplorerで\\192.168.1.4で共有フォルダアクセスOK (2)192.168.0.7のexplorerで\\192.168.1.4で共有フォルダアクセスOK (3)192.168.1.4のexplorerで\\192.168.0.6で共有フォルダアクセスNG (4)192.168.1.4のexplorerで\\192.168.0.7で共有フォルダアクセスOK NGになった(3)を調べる為に、ネットワークモニター(Wireshark)でパケット内容を確認しました。 (3)192.168.1.4のnetbios-ssnのSYNに対して192.168.0.6からACKなし (4)192.168.1.4のnetbios-ssnのSYNに対して192.168.0.7からACKあり また、192.168.1.4から192.168.0.6に対してpingが通る事は確認 次に何を調べてよいのかわからなくなり、どなたかご教授頂ければありがたいです。

  • 負荷検証時のネットワークの詰まり

    ワードプレスで作成されたページの負荷検証を行っています。 10分間程度のみ7000-10000アクセスが発生する想定でテストしております。 テストに使用しているツールはjmeter シナリオは10分間の間指定したアクセス数を等間隔で発生させるようにしています。 テストを行うと以下のような現象が起きており、原因の切り分けがうまくできず困っています。 10分間7000アクセスで検証しております。 検証1 そのままのページで検証。 半分以上のリクエストが失敗し、レスポンスを受け取っておりません。 エラーコードが返ってきていないので、apacheが何も返せていない状況なのかと考えました。 検証2 DBの処理がもたついているのとも考え、表示されるページを保存し、静的ページで検証。 全てのリクエストが遅延なく(ロードアベレージも4コアで1を超えない)レスポンスを受け取れました。 DBの問題?かと思ったのですが、それだと、apacheから何かレスポンスを受け取るのではと思いました。 ※検証1で受け取るレスポンスのほとんどがapahceのレスポンスではないエラーとなっています。(エラー内容1)  一部は、CSSなどのファイルが読み込めないなどのエラー(エラー内容2) レスポンスがないというのは、こちらから送信したリクエストがルーターなどで詰まっている?のかなと思い始め、  1 大量のアクセスを送信しているので、ネットワークが詰まってしまってリクエストがそもそも送信できていない。  2 受け取ったデータ量が多すぎてサーバーはレスポンスを返しているが、受け取れていない と考えたのですが、この可能性はありますでしょうか? ただ、こうなるとどのように、リクエストを送信できているか確認ができるのでしょうか? サーバーはマネージドサーバーのため、ルート権限がなく、ログなどを仕込むことなどが出来ません。 よろしくお願いします。 ------------------- エラー内容1 Load time: 11096 Latency: 0 Size in bytes: 1807 Headers size in bytes: 0 Body size in bytes: 1807 Sample Count: 1 Error Count: 1 Response code: Non HTTP response code: java.net.SocketException Response message: Non HTTP response message: Socket operation on nonsocket: connect Response headers: HTTPSampleResult fields: ContentType: DataEncoding: null エラー内容2 Load time: 45706 Latency: 8415 Size in bytes: 656299 Headers size in bytes: 10123 Body size in bytes: 646176 Sample Count: 1 Error Count: 1 Response code: 200 Response message: OK Response headers: HTTP/1.1 200 OK Date: Mon, 24 Dec 2012 03:07:21 GMT Server: Apache/2.2.23 X-Powered-By: PHP/5.2.17 X-Pingback: http://www.fujisawa.hs.nihon-u.ac.jp/wp/xmlrpc.php Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=UTF-8 HTTPSampleResult fields: ContentType: text/html; charset=UTF-8 DataEncoding: UTF-8

  • 【初心者】フォーム内容のファイル保存

    はじめて投稿いたします。 現在、SERVLETでアンケートフォーム(HTML)の内容を ブラウザに表示させ、その内容をテキストファイルに保存する。 ということをやっております。 以下のプログラムを書いたのですが、 アンケート内容がブラウザに表示、テキストファイルを指定した場所(C\直下)へ書き出すことも出来たのですが、その中身のアンケート内容が1項目しか書き出されません。 項目は全部で10個ほどあり、テキストボックスや、チェックボックスなどが混ざったものです。 初心者の質問で大変恐縮ですが、ここ4日ほど進んでません。。。 お分かりになる方、お願いいたします。 ECLIPSE3、Tomcat4を使用しています。 package Test; import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class MaxTEST extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/plain; charset=UTF-8"); //出力設定 PrintWriter out = response.getWriter(); //繰り返しパラメを返す設定 Enumerationで名前の一覧を取得 Enumeration names = request.getParameterNames(); while(names.hasMoreElements()) { String name = (String) names.nextElement(); String[] values = (String[]) request.getParameterValues(name); for (int i = 0; i < values.length; i++) { //ファイルへの書き出し PrintWriter File = new PrintWriter(newFileOutputStream("c:/a.txt")); File.println(name + "=" + values[i]); //ブラウザへの書き出し out.println(name + "=" + values[i]); //ファイル書き出し終わり File.close(); } } } }

  • ApachePOIでエラー

    ApachePOI3.9をインストールして、ECLIPSに入れて、サンプルコーディングを試して見ました。 実行したところ、次のエラーが表示されました。 java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/WorkbookFactory コーディング(抜粋)は以下の通りです。 import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.WorkbookFactory; public void doNippou(HttpServletRequest request, HttpServletResponse response) { String path = getServlet().getServletContext().getRealPath("document"); FileInputStream fi = new FileInputStream(path + File.separator + "A4nippou.xls"); Workbook wb = WorkbookFactory.create(fi); Sheet sheet1 = wb.getSheetAt(1); response.setContentType("application/msexcel"); String fname = "A4nippouyyyymmdd.xls" ; // ファイル名を設定 response.setHeader("Content-Disposition", "attachment; filename=" + fname); OutputStream out = response.getOutputStream(); wb.write(out); out.close(); } 実行環境は、CentOS5,Tomcat5.0,jdk1.4です。 Javaのバージョンが1.4ではApachePOI3.9が動かないのでしょうか。 よろしくお願いします。

  • サーブレットでの画像処理時のパスの指定

    クライアントからファイル名をサーブレットに渡し、 そのファイルをImageIOでクライアントに返して表示させるプログラムを組んでいます。 そこで、クライアントからパラメータで受け取った文字列(画像ファイル名)を変数に入れ、 サーブレット側で指定してある文字列(ファイル格納ディレクトリへのパス)の最後にその変数を連結させたものから Fileオブジェクトを作り、ImageIOのreadメソッドの引数として指定したところ IIOExceptionの例外が発生します。(Can't read input file!) サーブレット側でファイルへのパスを直接指定したものでFileオブジェクトを作って実行するとうまくいきます。 原因は何なのでしょうか? String filename = request.getParameter(クライアントから受け取ったファイル名); ServletContext sc = getServletContext(); String filepath = sc.getRealPath("/img/"+filename); response.setContentType("image/jpg"); File file = new File(filepath); BufferedImage readImage = ImageIO.read(file);   ←ここで例外が発生します ImageIO.write(readImage, "jpg", response.getOutputStream()); 開発環境はEclipce,Tomcatです。

    • ベストアンサー
    • Java
  • twitterAPIについて

    twitterAPIについて です。 今Visual Studio 2008でC#.NETでtwitterのタイムラインを読み込んでみようと思っています。 xmlを読み込むまではできましたが、 そのxmlを抽出する方法が全く分かりません。 このさきどうすればいいのでしょうか? ユーザー1:ツイート ユーザー2:ツイート といった感じにTextBoxに並べるのが目標です。 文字列をxmlに変換する方法があるのでしょうか? 一応ソースコードを載せて起きます。(using部分、例外処理などは除く) private void XmlLoad() { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://twitter.com/statuses/home_timeline.xml"); request.Credentials = new NetworkCredential(IDtext.Text, passText.Text); request.ContentType = "application/x-www-form-urlencoded"; request.Method = "POST"; request.Timeout = 10000; System.Net.ServicePointManager.Expect100Continue = false; WebResponse response = request.GetResponse(); Encoding enc = Encoding.GetEncoding(932); StreamReader reader = new StreamReader(response.GetResponseStream(), enc); string result = reader.ReadToEnd(); result = System.Web.HttpUtility.HtmlDecode(result); resultText.Text = result; reader.Close(); response.Close(); } private void OK_Click(object sender, EventArgs e) { XmlLoad(); } オブジェクト(TextBoxなど)は、 IDText(TextBox) passText(TextBox) OK(Button) resultText(TextBox) です! わかる方お願いします。 質問があれば答えます。

  • POSTリクエストの投げ方

    ASP.NET(c sharp)、.netフレームワーク2.0環境です。 認証(ベーシック認証)付きのREST APIを使いたいのですが、 リクエストの投げ方が理解できず困っています。 URLを指定してリクエストを投げると動くものなのですが…。 使い方としては、 ・POSTリクエストを使用 ・"item"をキーにして、対象になるURLの配列を指定 とのことです。 { "item" : [ "http://www.yahoo.co.jp/test1.jpg", "http://www.google.co.jp/test2.jpg" ] } ↑サンプルとして載っていました 以下の通り作ってみましたが、うまく動きません。 URLの配列指定がうまく出来ていないのではないかと思うのですが、 方法を教えていただけないでしょうか。 宜しくお願いします。 //HttpWebRequestの作成 WebRequest webreq = WebRequest.Create("https://api.test.com"); webreq.Method = "POST"; //認証の設定 webreq.Credentials = new System.Net.NetworkCredential("test@test.com", "testpass"); //POSTするデータ string postData = "item=http://www.yahoo.co.jp/test1.jpg"; byte[] byteArray = Encoding.UTF8.GetBytes(postData); webreq.ContentType = "application/json"; webreq.ContentLength = byteArray.Length; Stream dataStream = webreq.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); WebResponse response = webreq.GetResponse(); dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string responseFromServer = reader.ReadToEnd(); reader.Close(); dataStream.Close(); response.Close();

  • forward()でエラーが出て対応ができません。

    どなたか、教えてください。 サーブレットからDBに接続して、検索条件(名前)が一致しているレコードを取得。 request.setAttribute リクエストデータにその人の住所をセットし、別のjspファイルに送り 表示するプログラムなんですが。 getServletConfig().getServletContext().getRequestDispatcher("/jsp/result1.jsp").forward(request, response);の部分で、コミット済みというエラーが発生します。 下記がそのプログラムです。 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws     ServletException, IOException {      request.setCharacterEncoding("windows-31J");      String name = request.getParameter("name1");      Connection con=null;;      PreparedStatement ps =null;  try{       Context context = new InitialContext();     DataSource ds =(DataSource)context.lookup("java:comp/env/jdbc/FrameWork");     con = ds.getConnection();     ps = con.prepareStatement("SELECT * FROM address where name like ?;");     ps.setString(1, name);     ResultSet rs = ps.executeQuery();    rs.next();    String address =rs.getString("address");   request.setAttribute("address1", address);    rs.close();    ps.close(); }catch(Exception e){ e.printStackTrace(); }finally{ try{ con.close();             }catch(SQLException e){e.printStackTrace();} }     try{ getServletConfig().getServletContext().getRequestDispatcher ( "/jsp/result1.jsp").forward(request, response);       }catch(Exception e){System.out.print(e);} } } エラーにも関わらず、ページは切り替わるのですが、アドレスはNULL値が表示されます。 一応、デバックをしてSQLの取得、リクエストデータのセットまでは、問題ないのは確認済みです。 乱文でわかりづらいのですが、どなたかお願いいたします。

  • テキストフィールドに何も入れない場合の動作について

    現在サーブレットについて勉強しているものです。 身近に聞ける人がおらず、お手数ですがご教授願います。 分からないところは、JSPでテキストフィールドがあるページを作成し、そこに何も入れないまま送信した場合の動作についてです。 以下に載せているサンプルAの通りに作成し、何も入れないで送信したところ、if( (numberStr == null) || (numberStr.length() == 0) )の条件文の中の処理が走るようで、”何かいれて”というメッセージが表示されるのを確認しております。 しかし、私が作成したファイルを使い、テキストフィールドに何も入れないまま送信した場合はエクセプション画面(例外レポート)に飛んでしまいます。 同じ条件を使い、同じように表示させているつもりなのですが、私が作成したソースが上手くいかず、参考書のソースが上手く動作している理由がどうしてもわかりません。 恐らくソースを見た方が早い、という方が多いと思いますので、見栄えは悪いのですが、ソースを張らせていただきます。 また、入力文字数の制限より、import等は全て削除しました。 また、何も入力しない場合に用いられている、try、catchの必要性についても、いまいち分かりません。 ifとelseで全て網羅するようにせず、なぜtry,catchを使うのでしょうか? ご存じの方、いらっしゃいましたら、是非教えて下さい。 サンプルA-start--------------------------------------------------------------------- public class GuessServlet extends HttpServlet { /* 当たりの数字をランダムに決定 */ private int hit = new Random().nextInt(10); public void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /* jspファイルで入力した数字をひっぱってくる */ String numberStr = request.getParameter("number"); int input = Integer.parseInt(numberStr); response.setContentType("text/plain; charset=Windows-31J"); PrintWriter out = response.getWriter(); if( (numberStr == null) || (numberStr.length() == 0) ) { request.setAttribute("msg","何か入れて"); RequestDispatcher dispatcher = request.getRequestDispatcher("/reqattr/guess.jsp"); dispatcher.forward( request, response); } else if(hit == input) { request.setAttribute("msg","当たり。数字=" + input); RequestDispatcher dispatcher = request.getRequestDispatcher("/reqattr/guess_hit.jsp"); dispatcher.forward( request, response); } else{ request.setAttribute("msg","はずれ。数字=" + input); RequestDispatcher dispatcher = request.getRequestDispatcher("/reqattr/guess.jsp"); dispatcher.forward( request, response); } } } サンプルA-end--------------------------------------------------------------------- 私のソース-start--------------------------------------------------------------------- public class GuessServlet extends HttpServlet { /* 当たりの数字をランダムに決定 */ private int hit = new Random().nextInt(10); public void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /* jspファイルで入力した数字をひっぱってくる */ String numberStr = request.getParameter("number"); String error = null; int number = -1; if( (numberStr == null) || (numberStr.length() == 0) ) { error = "何か入れて"; } if(error == null) { try{ number = Integer.parseInt(numberStr); if(number < 0 || 9 < number) { error = "0~9を入れて"; } } catch(NumberFormatException e) { error ="数字を入れてください"; } } String path; if(error != null) { request.setAttribute("msg", error); path = "/reqattr/guess.jsp"; } else { if(hit == number) { request.setAttribute("msg","当たり。数字=" + number); path = "/reqattr/guess_hit.jsp"; } else { request.setAttribute("msg","はずれ。数字=" + number); path = "/reqattr/guess.jsp"; } } RequestDispatcher dispatcher = request.getRequestDispatcher(path); dispatcher.forward( request, response); } } 私のソース-end---------------------------------------------------------------------

    • ベストアンサー
    • Java