2011-10-18 34 views
2

私は、ErlangアプリケーションのOpenSTAによるパフォーマンステストを行います。テストは100人の仮想ユーザーで実行されます。いくつかの時点で、次のエラーがポップアップし始める:Yawsプロセスが終了しました

Yaws process died: {{badmatch,{error,eacces}}, 
       [{yaws_server,ut_read,1}, 
       {yaws_server,deliver_dyn_file,5}, 
       {yaws_server,aloop,3}, 
       {yaws_server,acceptor0,2}, 
       {proc_lib,init_p_do_apply,3}]} 

テストを実行し続けます。私はこのエラーに関する情報を見つけることができません。 eaccesError accessing a resourceを意味しますか?

EDIT:機能ut_read(UT)file:read_file(UT#urltype.fullpath)クラッシュ@Muzaaya Joshuaて電話を指摘したように。私はモジュールを再コンパイルし、文脈を印刷しました。エラーがeaccesあるとUTが成り立つ:

{urltype,yaws, 
          {file_info,14088,regular,read_write, 
           {{2011,9,13},{11,51,42}}, 
           {{2011,10,17},{17,59,44}}, 
           {{2011,3,16},{13,18,58}}, 
           33206,1,3,0,0,0,0}, 
          "/handler.yaws", 
          "c:/Temp/harmony/script/../www/handler.yaws", 
          "/",undefined,undefined,"text/html", 
          "/handler.yaws",undefined} 

このファイルhandler.yawsは我々のアプリのエントリポイントであり、すべてのリクエストに応じて呼び出されました。 100人以下の仮想ユーザーでテストを実行すると、これらのエラーは表示されません。 Missing permission for reading the file, or for searching one of the parent directories.のエラーは、read_fileのマニュアルに記載されていますので、どうすればよいですか?

ありがとうございます。

マーティン

答えて

0

YAWSの設定で許容されるキャッシュファイルのファイルサイズを増やすことによってこのエラーを修正することができましたmax_size_cached_file。これにより、私たちの.yawsファイルはメモリにロードされ、いつもfile:read_fileでアクセスできなくなりました。うまくいけば、これは他の誰かの時間(または日:)のカップルを保存します

1

EACCESアクセスが拒否された意味、エラーコードは、ファイルdocumenationの最後に記載されている:http://www.erlang.org/doc/man/file.html#write_file_info-2

+0

ありがとうございます。あなたはそのようなcontexでこのエラーを見たことがありますか?プロセスに適用すると、何を意味するのでしょうか? –

1

イチゴ腫は、ファイルを開くことができませんでした。これは、yawsアプリケーションを実行しているユーザーに対して拒否されたファイル読み取り許可です。 yawsに関するすべてのフォルダを所有するようにyawsを実行しているユーザーに権限を追加すると、これは修正される可能性があります。それをチェックするには、すべてのパスがルートによって所有されている場合は、rootとしてyawを実行してみてください。点におけるyaws_server.erlソースファイルは、以下の通りである:

 
ut_read(UT) -> 
    ?Debug("ut_read() UT.fullpath = ~p~n", [UT#urltype.fullpath]), 
    case yaws:outh_get_content_encoding() of 
     identity -> 
      case UT#urltype.data of 
       undefined -> 
        ?Debug("ut_read reading\n",[]), 
        {ok, Bin} = file:read_file(UT#urltype.fullpath), 
        ?Debug("ut_read read ~p\n",[size(Bin)]), 
        Bin; 
       B when is_binary(B) -> 
        B 
      end; 
     deflate -> 
      case UT#urltype.deflate of 
       B when is_binary(B) -> 
        ?Debug("ut_read using deflated binary of size ~p~n", 
          [size(B)]), 
        B 
      end 
    end. 

悪い一致が発生する上記ソースにおける太字の線です。

doc root、sslフォルダなどのフォルダにアクセスする権限を持つユーザであることを確認してください。ユーザーのヨーヨーはすべての必要なファイルにアクセスできますか?

+0

ありがとうございました。困ったことは、テストがWindows(サーバーはWindowsの下にインストールされている)で実行されるということです。典型的なユーザー操作をシミュレートし、テストを実行するときにのみこれらのエラーが表示されます。いくつかのデバッグステートメントがあります。あなたは、それらをオンにする方法を教えてもらえますか?再度、感謝します。 –

0

これは簡単です。今すぐあなたのLocal disk CProgram Files(窓7ではProgram Files (x86))に行き、最後にヨーイングがインストールされている場所に行きます。これは、フォルダ:Yaws-VERSIONとなります。 Yaws-1.89

これを右クリックすると、Propertiesが選択され、ポップアップウィンドウでSecurityが選択されます。セキュリティで、editをクリックします。今度はGroup or usernamesの下で、各ユーザー(および各タイプのアカウント)を選択し、読み取り、書き込み、フルコントロールのe.c.c. Applyをクリックし、ウィンドウが変更を実行するのを待ってから、Okをクリックして閉じます。ユーザーはすべての必要な権限を持つ必要があります。

+0

これは問題を鎮めません。とにかくありがとう。 –

関連する問題