【AmiVoice API】同期HTTPおよびWebSocketインターフェースにおける接続エラーについて(2025-01-24 17:35更新)
(2025-01-24 17:35更新)
2025年1月21日 同期HTTPおよびWebSocketインターフェースにおいて、リクエストを送信しても接続ができない状況になっておりました。
◆発生日時
2025年1月21日(火)04:07 〜 15:43頃
特に以下の時間帯において問題が発生しておりました。
・09:12 ~ 11:38 頃
・15:42 ~ 15:43 頃
◆現象
上記の時間帯において「会話_汎用」音声認識エンジンに8k音声による音声認識リクエストを行おうとすると、接続できない、または非常に困難な状況が発生しておりました。このとき、クライアントプログラムへは以下のようなエラーを送信しておりました。エラーの詳細は参照セクションの[1]を参照してください。
s can’t connect to recognizer server
s can’t connect to recognizer server (can’t connect to server)
s can’t connect to recognizer server (can’t find available servers because maximum allowed clients has reached)
この時間帯において、すでに接続され、音声認識を行っていたセッションについても、レスポンスが遅くなり、クライアントとサーバー間の通信タイムアウトを起こす場合がありました。この場合、クライアントアプリケーションでは、音声認識結果が途中までしか得られないという現象が発生しておりました。
◆現象の詳細と原因
音声認識サーバに対するロードバランサーが正常に機能しておらず、一部の音声認識サーバに負荷が集中していたことが原因でした。このため、負荷が集中したサーバでは音声認識処理の遅延、および、新たな接続を受け付けられない状態となっておりました。負荷が集中し動作に支障をきたしたサーバは全体の約4.7%でした。
詳細:
1.アクセスが集中したタイミングで、特定の音声認識サーバ(以下、DSRS)から、ロードバランサーサーバ(以下、DSRM)への接続数の報告がされない状態となっていました。
2.DSRMは接続数が少ないDSRSを選択して新たなリクエストを処理するため、上記の問題が発生すると、実際には接続数が多いDSRSに対しても接続数が少なくみえてしまうため、特定のDSRSへ次々とリクエストを送信していました。
3.この特定のDSRSには、想定を超える数のクライアントが接続され、インスタンスのリソースを使い切る、あるいは、DSRSの接続クライアント数の上限に達し、新たな接続を受け付けられない状況に陥っていました。
4.このため、該当のDSRSでは音声認識処理が遅延し、クライアントへのレスポンスが大幅に遅延していました。この結果、サーバーとクライアント間におけるタイムアウトによりセッションが切断され、結果を途中までしか返さないことが起きていました。
5.また、DSRSはメモリ不足により、強制終了される事象も発生し、クライアントとのセッションが途中で切断され、結果を途中までしか返さないことが起きていました。
異常終了した後は、オートスケールにより新たにDSRSが起動するため、DSRSのキャパシティ不足が発生しないよう、自動的に復旧していました。また、DSRM内のDSRSごとの接続情報は、DSRSから定期的に送信されており、DSRSが異常終了して処理が完了し正常になった後、DSRMの情報が正しく更新され、システムは時間経過とともに自動的に回復しました。
◆対策
短期的な対策としてもし負荷が集中した音声認識サーバがあれば、ロードバランサーから切り離すことで対応します。また、このロードバランサー(DSRM)は弊社が開発した独自のプログラムです。音声認識サーバからの接続情報が得られない場合でも、特定の音声認識サーバに負荷が集中しないようにアルゴリズムの修正を行うことで対応いたします。
◆参照
[1]:AmiVoice APIマニュアル「sコマンドパケット/sコマンド応答パケットのサーバエラー一覧」: https://docs.amivoice.com/amivoice-api/manual/reference-websocket-s-command-packet#server-error
——————————————
上記の変更前の記事は以下のとおりです
(2025-01-21 13:51 公開 / 2025-01-22 8:31 更新)
本日、同期HTTPおよびWebSocketインターフェースにおいて、リクエストを送信しても接続ができない状況になっておりました。
◆現象
以下の期間において「会話_汎用」に8k音声を送信すると接続しにくい状況が発生しておりました。
(2025-01-22 8:31 追記)
接続されにくいだけではなく、この期間中にすでに接続していたセッションについて、レスポンスが遅くなり、クライアントやサーバ間の通信タイムアウトを起こしておりました。この場合、クライアントアプリケーションにとっては、音声認識結果が途中までしか得られないという現象が起きてしまうことになります。
◆接続エラー発生時間2025/01/21 09:12頃
~ 11:38
頃(速報)2025/01/21
15:42頃
~ 15:43 頃(速報)
◆現状
現在はこの問題は起きておりません。
◆原因
原因は調査中です
皆様には、ご迷惑とご心配をお掛けしてしまいましたことを、深くお詫び致します。現在、原因や影響範囲を調査中で、正確なことが分かり次第更新いたします。