0

高負荷環境でapache2とmono2.8.2を実行しているubuntuサーバーをテストすると、約10分ごとに、次のエラーが出力されます(最後の2つのエラー行はその後約100回繰り返されます)。

Handling exception type ArgumentOutOfRangeException
Message is Non-negative number required.
Parameter name: srcOffset
IsTerminating is set to True
System.ArgumentOutOfRangeException: Non-negative number required.
Parameter name: srcOffset
  at System.Buffer.BlockCopy (System.Array src, Int32 srcOffset, System.Array dst, Int32 dstOffset, Int32 count) [0x000b7] in /home/elliott/mono-2.8.2/mcs/class/corlib/System/Buffer.cs:103
  at System.Net.WebConnectionStream.ReadAll () [0x00183] in /home/elliott/mono-2.8.2/mcs/class/System/System.Net/WebConnectionStream.cs:259
  at System.Net.WebConnectionStream.CheckResponseInBuffer () [0x0002f] in /home/elliott/mono-2.8.2/mcs/class/System/System.Net/WebConnectionStream.cs:120
  at (wrapper remoting-invoke-with-check) System.Net.WebConnectionStream:CheckResponseInBuffer ()
  at System.Net.WebConnection.ReadDone (IAsyncResult result) [0x001a3] in /home/elliott/mono-2.8.2/mcs/class/System/System.Net/WebConnection.cs:476
  at System.Net.Sockets.Socket+SocketAsyncResult.CB (System.Object unused) [0x00000] in /home/elliott/mono-2.8.2/mcs/class/System/System.Net.Sockets/Socket.cs:214
[Tue Mar 08 13:49:58 2011] [error] (70014)End of file found: read_data failed
[Tue Mar 08 13:49:58 2011] [error] Command stream corrupted, last command was 1
[Tue Mar 08 13:49:58 2011] [error] (70014)End of file found: read_data failed
[Tue Mar 08 13:49:58 2011] [error] Command stream corrupted, last command was 1

これは私のコードのどこかにある問題ですか、それともmod_mono自体に問題がありますか?サーバーに高い負荷をかけた後に表示されたようで、どのソースコードファイルにも参照行番号がありませんでした。

また、mono 2.10.1にアップグレードした後、小規模なテストでは、代わりにすべてのリクエストでこのエラーが発生します(ただし、大規模な負荷をテストすることはできませんでした)。

[Mon Mar 14 12:59:30 2011] [error] (70014)End of file found: read_data failed
[Mon Mar 14 12:59:30 2011] [error] Command stream corrupted, last command was -1
4

2 に答える 2

0

それは私にはバグのように見えSystem.Net.WebConnectionStream.ReadAllます。どういうわけかreadBufferOffset、それがネガティブになっているのではないかと思いますが、どのようにすればよいのかは明らかではありません...(もちろん、これは2.8.2以降で修正されている可能性があります...)の引数検証コードBuffer.BlockCopyは非常に単純です...

于 2011-03-14T16:45:00.290 に答える
0

2012-03-01にMonoにコミットされたgitpullで、これを少し前に修正した可能性があります。残念ながら、これはモノラル2.10.8.1ではないことを意味します(モノラル3はまだベータ版であるため、多くのディストリビューションが現在使用されています)。

于 2013-04-06T01:47:23.040 に答える