tl;dr:
- Web API サービスの実行速度が遅いため、ログを追加しました
- ロギングでタイムアウトが見つからないというエラーが表示される
- サーバー上に webapi プロジェクトの ravendb データベースが表示されませんでしたが、開発マシンにはあります
- raven は 8080 で実行され、実行されています
- プラットフォームインストーラー(昨日nservicebusからダウンロード)を介してnservicebusを再インストールしようとしました
- まだ同じ問題があります
- 展開を台無しにしたか、何らかの方法でクリーン インストールを行う必要があると思います
- webapi プロジェクトがタイムアウトを読み取るにはどうすればよいですか?
アルファ版に備えて、実稼働マシンでアプリケーションを動作させようとしています。
私たちのアプリケーションには、複数の Web API サイトと多くのサービス ホストがあります。
私が見ているエラーは、現在、本番環境の Web API ホストのみにあります。
2014-08-06 01:55:24,789 [52] DEBUG NServiceBus.Timeout.Hosting.Windows.TimeoutPersisterReceiver [(null)] - Polling for timeouts at 08/06/2014 01:55:24.
2014-08-06 01:55:24,793 [46] WARN NServiceBus.Timeout.Hosting.Windows.TimeoutPersisterReceiver [(null)] - Failed to fetch timeouts from the timeout storage
これがしばらく繰り返されます。最終的に (約 2 分) エンドポイントはあきらめ、ただ死んでしまいます。
2014-08-06 01:57:03,645 [17] WARN NServiceBus.CircuitBreakers.RepeatedFailuresOverTimeCircuitBreaker [(null)] - The circuit breaker for TimeoutStorageConnectivity will now be triggered
2014-08-06 01:57:03,645 [17] FATAL NServiceBus [(null)] - Repeated failures when fetching timeouts from storage, endpoint will be terminated.
System.InvalidOperationException: There is no index named: dynamic/TimeoutData
nservicebus の log4net ファイル アペンダーを有効にして、これらのログを取得し、Web API サービスで何が起こっているかを把握しています。
ホスト サービスは、開発マシンでは問題なく動作しますが、何らかの理由で、運用マシンでは非常に遅くなります。開発マシンではエラーは表示されません。実稼働マシンにライセンスがインストールされているため、期限切れのライセンスによって制限されているわけではありません。
奇妙なことに、開発マシンでは Web API プロジェクトのデータベースが表示されますが、運用マシンでは、インストールされたサービス ホストのみにデータベース エントリがあります。
私たちは約 18 か月間、この特定のアプリケーションの開発に携わってきました。nservicebus をインストールしたときに、タイムアウトがインストールされるように設定されていなかった可能性があります。ただし、プラットフォーム インストーラー (昨日ダウンロードしたもの) を実行しようとしましたが、まだタイムアウトが発生しません。サービスホストをインストールすると、タイムアウトがインストールされるはずですが、何らかの理由でタイムアウトが表示されないと思います。
この時点で、nservicebus と ravendb をアンインストールすることを考えていますが、クリーンな再インストールを行う方法がわかりません。
ここに私のglobal.asaxからのいくつかの関連する行があります
IContainer container = IoC.Initialize();
DependencyResolver.SetResolver(new StructureMapDependencyResolver(container));
GlobalConfiguration.Configuration.DependencyResolver = new StructureMapDependencyResolver(container);
Configure.Transactions.Enable();
Configure.Serialization.Json();
Configure.With()
.DefiningEventsAs(t => t.Namespace != null && t.Namespace.Contains(".Events"))
.DefiningCommandsAs(t => t.Namespace != null && t.Namespace.Contains(".Commands"))
.StructureMapBuilder(container)
.Log4Net()
.UseTransport<Msmq>()
.UnicastBus()
.CreateBus()
.Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());