HTTP 500 応答と「SOAP ドキュメントを解析できません (Unable to parse SOAP document)」が原因で MID サーバーの問題が発生する 過去の SOAP 解析の失敗Issue 過去のある時点で、(MID サーバーを介したインスタンスからの) 送信 SOAP 呼び出しからの応答 XML がインスタンスによって処理または解析されなかった場合、MID サーバーはその応答 XML をインスタンスに何度も再送信しようとし続けることがあります。これにより、現在の ECC キュー エントリーの処理が遅くなったり遅れたりするなど、MID サーバーで問題が発生する可能性があります。 この問題の影響を受ける場合、MID サーバーエージェントログに次のような内容が記録され、通常は何度も繰り返されます。 ECCSender.1 Attempt to send ecc_queue.ab515820db871c1064c4de4dd39619e0.80037.xml failed: file remains enqueued for later sendingECCSender.1 Sending ecc_queue.a5ae18e8db4f1050e2630d1ed3961940.79998.xmlECCSender.1 DEBUG: HTTPClient.registerOtherProtocols() starting on Thread Thread[ECCSender.1,5,main].ECCSender.1 WARNING *** WARNING *** Method failed: (https://<instance-name>.service-now.com/ecc_queue.do?SOAP&displayvalue=all&redirectSupported=true)HTTP/1.1 500 Server Error with code: 500ECCSender.1 WARNING *** WARNING *** Unable to parse SOAP documentECCSender.1 WARNING *** WARNING *** RemoteGlideRecord failed to send data to https://<instance-name>.service-now/ with (Unable to parse SOAP document) インスタンス アプリ ノード/localhost ログにも、要求の同様の、より詳細なエラーが表示されます。例えば。: API_INT-thread-2 <session> txid=45945ae21bd9 *** Start #130180 /ecc_queue.do, user: mid_server_userAPI_INT-thread-2 <session> txid=45945ae21bd9 WARNING *** WARNING *** org.xml.sax.SAXParseException; lineNumber: 331; columnNumber: 942; Invalid byte 2 of 4-byte UTF-8 sequence.API_INT-thread-2 <session> txid=45945ae21bd9 WARNING *** WARNING *** SOAP Fault: <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Unable to parse SOAP document</faultstring><detail>Error completing SOAP request</detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>API_INT-thread-2 <session> txid=45945ae21bd9 tx_pattern_hash=-59168894 *** End #130180 /ecc_queue.do, user: mid_server_user, total time: 0:00:00.147, processing time: 0:00:00.147, SQL time: 0:00:00.000 (count: 6), source: xxxx , type:soap, method:insert, api_name:SOAP APIs, resource:ecc_queue.do, user_id:8c241a9edb5d2f4014b38e68689619aa, response_status:500 Causeこの問題の最も可能性の高い原因は、最近実行された統合プローブのecc_queue入力フィールド値に「不良」のデータが含まれていることです。例:送信 REST/SOAP、LDAP/JDBC インポート。これは、Unicode 文字エンコード、XML 形式、エスケープされていない XML エンティティ、または SOAP テーブル API コードがデータを解析できず、レコードを ecc_queue テーブルに挿入できないことを意味するその他の理由である可能性があります。 SOAP テーブル API がecc_queueレコードを挿入できたとしても、その挿入に対して実行されているビジネスルール (通常は「センサー」ビジネスルール) がクラッシュしたり、例外が発生したり、ループ/再帰が発生してトランザクションが中止されたり、トランザクションが意図的に中止されたりすると、トランザクションがエラー 500 で失敗する可能性があります。これらは、ビジネスルールの前または後である可能性があります (非同期では挿入が中断されません)。 原因を確実に知る唯一の方法は、インスタンスアプリノードのログで、要求を処理したAPI_INTセマフォトランザクションを確認することです。これは、XML に関する特定の問題が検出された場合、またはビジネスルールが挿入を妨げているかどうかを示します。これによってのみ、特定の既知の問題をサポートケースにリンクしたり、原因がカスタムコードの場合は解決策を見つけたりすることができます。 SAXParseException の場合、アプリノードログに問題の原因となっているデータの行と列がわかる場合があります。例:"SAXParseException; lineNumber: 331; columnNumber: 942;".Web ブラウザーで XML ファイルを開くと、データに絵文字などの拡張 Unicode 文字が表示される場合があります。 ビジネスルールが原因の場合、またはペイロードサイズが問題である場合、名前は通常、MID サーバーエージェントログに示されます。例えば。ECCSender.1 WARNING *** WARNING *** Request body exceeded max allowed content lengthECCSender.1 WARNING *** WARNING *** Error executing business rule 'Process LDAP Listener on MID changes'ResolutionMID サーバーホストで、ディレクトリ <MID server installation path>/agent/work/monitors/ECCSender/output_1 で次のような名前のファイルを探します ecc_queue.66ae58eedba0e45064c4de4dd39619f6.1.xml ファイル形式は、eccc_queueテーブルからレコードを XML としてエクスポートした場合とまったく同じです。これは、インスタンス SOAP テーブル API が取り込む形式です。 ECC_Senderフォルダは順番に処理されますが、これは特にJDBCProbeとLDAPProbeに使用されるoutput_s(シーケンシャル)フォルダに当てはまるため、問題は最も古いファイルの内容にあります。 「不良」レコードをecc_senderフォルダーから移動する必要があります。このecc_queue入力レコードはインスタンスecc_queueに挿入されないため、これによりデータが失われる、必要以上に移動しないようにすることが重要です。 ecc_queueの優先度(0〜2)に応じて、または順次ジョブの場合は、/agent/work/monitors/ECCSender/に複数の出力フォルダがあります。閉塞はこれらのどれかにある可能性がありますが、経験からすると、output_s可能性が高いです。 --- ファイルの変更日時を調べて、同じ秒内に複数のファイルがある場合は最も古いファイルを見つけます。これらを別のディレクトリーに移動します (バックアップしたディレクトリー/ファイルは、必ず <MID server installation path> の外に移動してください)。新しいファイル (最後の数分から最後の 1 時間まで) は、現在アクティブな ECC キュー処理に使用されている可能性があるため、操作しません。 次に、移動したファイル(古いファイル)を確認し、次のような問題が含まれているかどうかを確認できます。 不正な形式/無効な XML文字/UNICODE エンコーディングの問題大きいペイロード (glide.soap.max_inbound_content_length 関連)インスタンスの SOAP テーブル API の問題ecc_queue にビジネスルールを挿入する前挿入後の ecc_queue のビジネスルール。挿入されていても、挿入のステータスが 500 になるため、MID サーバーは挿入されていないと見なします既知の問題: PRB1502013 4 バイト UTF-8 シーケンスのバイト 2 が無効であるため、ECCSender が ECC キューへの入力の挿入に失敗することがあるPRB1487514「ディスカバリー:デバイス開始数の更新」BR が空の ECC キューペイロードで未処理の例外をスローするその他のログの例は、 これらのファイルが存在していたということは、インスタンスで処理/解析できなかったことを意味します。その後、文字エンコードの問題を回避するために外部 SOAP API に対する呼び出しを変更するなど、インスタンスで関連する統合作業を行う必要があります。ナレッジベースで特定のビジネス URL に関する既知の問題を検索するか、カスタムビジネスルールを修正します。 これらのecc_queue入力が失われた場合の影響を測定するには、フィールド値を使用して、レコードの対象地物を特定する必要があります。KB0727132 ECC キューレコードを特定の機能またはジョブにリンクする方法Related Links注: San Diego リリースまでは、一般的に MID サーバーのキュー処理はこれによってブロックされる可能性があります。この修正プログラムは、不正な XML ファイルを agent\work\monitors\ECCSender\output_error に自動的に移動することでブロックを回避しますが、考えられる根本原因を特定または解決することはできません。このKBは依然として非常に関連性があります。PRB1521761 / ECCSender は、さまざまな理由で ECC キューへの入力の挿入に失敗し、それ以降のすべての入力をブロックし、MID サーバーが事実上停止したままになる可能性があります