4

私は、モノラル2.8.1のmod_monoでASP.NET MVC2アプリケーションを実行しており、現在、Apacheがリークしているように見えるセマフォ配列を定期的にクリアする必要があります。

私はしばらく前に2.6.7のモノラルrpmで始めましたが、セマフォ配列のリーク(つまり、 ipcsにますます蓄積される)とASP.NET MVC2との非互換性の両方でいくつかの問題があったため、ソースから2.8を構築しました。リークが続いたので、ソースから2.8.1をビルドしたところ、同じことがまだ発生しています。これはAmazonAMIにあります(内部ではcentosだと思います)。症状は、セマフォ配列が蓄積し続け、しばらくしてからipcrmを使用して手動で削除しないと、ASP.NETページへの要求がログにエラーのないコンテンツを返さないことです。同じ問題をcentos5.4AMIでも再現しました。

誰かがapache/mod_monoの下でASP.NETを正常に実行していて、私はちょうどいくつかのエッジケースに遭遇していますか?これが他の人に起こっているという言及を見つけることができないので、それは一般的なASP.NETのバグではないと思います。これをさらにトラブルシューティングする方法はありますか?

4

3 に答える 3

9

最後にこれを理解し、解決策は私が受け取った他の警告をフォローアップしないという私自身の間違いを明らかにしますが、これは他の誰かがこれに遭遇するのに役立つはずです.

デフォルトでは、Apache 構成は以下の構成順序を持っています。

Include conf.d/*.conf
User apache
Group apache

つまり、すべての conf ファイル (通常は仮想ホストが定義されている場所) は、httpd ユーザーとグループが設定される前にロードされます。これにより、再起動時に次の警告が表示されます。

[Mon Jan 24 00:12:50 2011] [crit] The unix daemon module not initialized yet.
Please make sure that your mod_mono module is loaded after the User/Group
directives have been parsed. Not initializing the dashboard.

とにかくすべてが機能しているように見えますが、これがセマフォ リークの原因です。Includeの後にを移動するUser/Groupと、警告がなくなり、mod_mono がセマフォをリークしなくなります。

于 2011-01-26T17:58:00.683 に答える
1

クロスプロセス ハンドルで使用される共有メモリでこれを見てきました。

私の修正は MONO_DISABLE_SHM=1 を設定することでしたが、クロスプロセス ハンドルのサポートが 2.8 以降で無効になっているため、これが問題かどうかはわかりません。

MONO_DISABLE_SHM を試して、違いがあるかどうかを確認することもできます。

于 2011-01-04T22:21:13.077 に答える
0

Boehm の代わりに新しいsgenガベージ コレクタを使用してみてください。

新しいガベージ コレクターを使用するには、Mono を --gc=sgen コマンド ライン オプションで呼び出すか、MONO_ENV_OPTIONS 環境変数に「--gc=sgen」オプションを含めるように設定するだけです。デフォルトでは、Mono は引き続き Boehm コレクターを使用します。

于 2011-01-04T09:43:54.007 に答える