ブラウザと Synchrony が何度も再接続され、ページの編集や保存ができない

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Fisheye および Crucible は除く

問題

共同編集を有効にしてページを編集または保存しようとすると、UI に次のタイムアウト/接続エラーが断続的に表示される。

  1. ページを編集しようとしたときに、自動保存の間隔に達すると次のメッセージが表示される

    Can't reach the server. Check your internet connection, and we'll keep trying to reconnect you.
  2. ページを手動で更新しようとすると、次のメッセージが表示される。

    Unable to communicate with server. Saving is not possible at the moment.

    または

    The editor didn’t load this time
    The connection timed out. If it happens again, speak to your Confluence admin. You may be using a proxy server that prevents WebSocket connections.

また、次のメッセージが atlassian-synchrony.log に表示される

2018-11-11 15:03:28,451 DEBUG [271:StdOutHandler [/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/bin/java]] {"synchrony":{"message":"tilt.bayeux.server [warn] error rerouting request","ns":"tilt.bayeux.server","throwable":"clojure.lang.ExceptionInfo: in channel closed prematurely 
...
2018-11-11 22:01:55,549 DEBUG [143:StdOutHandler [/usr/lib/jvm/java-8-oracle/jre/bin/java]] {"synchrony":{"message":"tilt.bayeux.server [warn] error rerouting request","ns":"tilt.bayeux.server","throwable":"clojure.lang.ExceptionInfo: unprocessed request {:type :no-target, :source nil}\n\tat clojure.core$ex_info.invokeStatic(core.clj:4725)
...
2018-11-11 22:01:56,326 DEBUG [143:StdOutHandler [/usr/lib/jvm/java-8-oracle/jre/bin/java]] {"synchrony":{"client":{"clientId":"UCBLNUcexJSH20I71GOLRcw","sk":"pong timeout\nError: pong timeout\n    at new Xj (eval at <anonymous> (https://domain/s/202a4eb254bd334279a734425f2367bc-CDN/
...

環境

  • 8.5 より前の Tomcat バージョン。Confluence インストール フォルダーで次のコマンドを使用して確認できます。

    java -cp lib/catalina.jar org.apache.catalina.util.ServerInfo
  • 次のプロトコルが<Confluence-Install>/conf/server.xml ファイル内のアクティブなコネクターで設定されている。

    protocol="org.apache.coyote.http11.Http11Protocol"

診断

上記の Synchrony のログには、タイムアウトエラーと再ルーティング リクエストが何度か記載されており、ブラウザで見られる接続性の問題を説明しています。何が起きているのかをよりよく理解するためには、以下のデータを確認する必要があります。

  1. ブラウザのコンソール ログには、Synchrony との接続が複数切断されたことを示す次のようなメッセージが表示されます。

    Synchrony connected. batch.js:633:165
    Synchrony: Warning: reconnect (xhr error) batch.js:540:344
    warn reinit pong timeout
    Synchrony disconnected! batch.js:633:165
  2. HAR ファイルには、Bayeux サーバーに対してキャンセルされたリクエスト(HTTP リターンコード 0) が複数表示されます。


    02:51:20.782    0   708 —   [MIME][NOT AVAILABLE][RESP W][CACHE ??] 918 ms  
    ‡
    POST https://domain/synchrony-proxy/v1/bayeux-sync1
  3. Confluence にリクエストを転送するリバース プロキシを使用している場合、次のようなメッセージが表示されることがあります (例: Apache の場合)。

    [Tue Oct 30 08:32:23.707353 2018] [proxy_http:error] [pid 1111:tid 11111111] (103)Software caused connection abort: [client 1.1.1.1:11111] AH01102: error reading status line from remote server 2.2.2.2:8090, referer: https://domain/pages/resumedraft.action?draftId=<ID>&draftShareId=<ID>
    [Tue Oct 30 08:32:23.707372 2018] [proxy:error] [pid 1111:tid 111111111] [client 1.1.1.1:111111] AH00898: Error reading from remote server returned by /synchrony-proxy/v1/bayeux-sync1, referer: https://domain/pages/resumedraft.action?draftId=<ID>&draftShareId=<ID>

原因

この現象は、 Confluence が新しい NIO バージョンではなく古い BIO HTTP プロトコルを使用している場合に発生します。NIO バージョンは Confluence 6 以降のデフォルト バージョンですが、たとえば、アップグレード後にコネクターが古いバージョンの Confluence からコピーされた場合は、BIOプロトコルが使用されている可能性があります。

BIO プロトコルの問題に関する詳細は以下のドキュメントを確認してください。

ドキュメントに記載の通り、BIO プロトコルにはブロッキング セマンティクスがあり、WebSocket または HTTP ロング プーリング接続にとって大きな問題となります。これらは Synchrony に対して可能な 2 つの接続タイプであるため、このプロトコルを使用するとブラウザとの通信が大幅に低下する可能性があります。このため、Synchrony ログで確認できるリクエストの再ルーティングのタイムアウトとエラー、およびブラウザと Synchrony の接続が何度も切断されることがあります。

この問題は、インスタンスの負荷が増えるほど悪化します。これは BIO プロトコルの非効率性によるもので、特に大規模な場合、WebSocket や HTTP のロング プーリング リクエストを適切に処理することができません。

このプロトコルを使用しているかを確認するには、<Confluence-install> /logs/catalina.out ファイルを確認し、プロトコル スタートアップを確認します。次のように表示されます。

31-Oct-2018 14:23:39.027 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-bio-8090"]

ソリューション

このことを念頭に置き、Tomcat コネクタのプロトコルを新しいバージョンに置き換える必要があります。そのための手順は次のとおりです。

  1. <Confluence-Install>/conf/server.xml ファイルを編集します。
  2. アクティブなコネクタでプロトコル属性を探します。次のような表示です。

    protocol="org.apache.coyote.http11.Http11Protocol"
  3. 上記の BIO プロトコルを NIO2 バージョンに置き換えます。次のようになります。

    protocol="org.apache.coyote.http11.Http11Nio2Protocol"
  4. ファイルを保存して Confluence を再起動します
  5. 変更後にエディターが正しく動作するかどうかを確認します。



説明 ページ編集中のタイムアウト
製品Confluence



最終更新日 2021 年 9 月 17 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.