サーバーで断続的に最大 100% の CPU を使用する Web サービスがあります。これを開発サーバーで複製することはできません。本番環境でのみ発生するようです。負荷の問題ではないかと考えましたが、一度に最大 10 人で開発をテストしています。本番環境では、ベータ版の状態で 2 人しか使用していません。無限ループがないかコードを精査しましたが、何もありません。
何度も何度も検索した後、文字列の連結が問題である可能性があると述べているこのページを見つけました。を使用した場所が 5 か所ありますが、そこのリンクでアドバイスされているようにStringWriter
変更しました。StringBuilder
しかし、問題はまだ発生しており、それがDataTable.WriteXML
呼び出しである可能性があるかどうか疑問に思っています. 基本的に、Web サービスのすべてのメソッドはデータ テーブルに入力し、データを XML として返します。これは、サード パーティに必要な形式であるためです。呼び出しはすべて次のようになります。
Dim SB As New StringBuilder
Dim SW As New IO.StringWriter(SB)
dsSource.Tables("Test").WriteXml(SW, Data.XmlWriteMode.IgnoreSchema, True)
これは非効率ですか?これにより、CPU 使用率が 100% になりますか? それが原因である可能性がある場合、どの代替手段が最適でしょうか?
これについて何らかの監視を実行したいと思っていますが、実際には、おそらく週に 1 回発生し、ライブ サーバー上でのみ発生するため、時間をかけてパフォーマンス診断を実行する場合は、サービスが停止する時期です。稼働していないと、ユーザーは仕事を終わらせることができません。プロセスを強制終了して再生成する方がはるかに迅速かつ簡単です。
何か案は?