2

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());
4

2 に答える 2

2

これを修正するには、次の手順を実行します

  • 通常はhttp://RAVEN_DB_SERVER:8080にある RavenDB コントロール パネルを開きます。
  • エンドポイントのデータベースを選択します
  • [インデックス] タブに移動します
  • [すべてのインデックスを削除] をクリックします

サービス エンドポイントが開始されるとすぐに、インデックスが再作成されます。

于 2016-03-11T20:25:58.277 に答える
0

Raven が本番環境にインストールされていないようです。

インストール手順については、こちらをご覧ください

HTH

于 2014-08-07T09:42:46.353 に答える