0

私はjetty9-compat + java8設定を使用していて、次の例外を受け取ります。おそらくこのためセッション中にオブジェクトを保存することができないので、結局私は自分のサービスにログインできません。GAEのフレキシブル環境サービスでのmemcacheエラー

[INFO] cze 28, 2016 11:17:56 AM com.google.apphosting.vmruntime.VmMetadataCache getMetadata 
[INFO] 
[INFO] INFO: Meta-data 'attributes/gae_affinity' path retrieval error: metadata 
[INFO] 
[INFO] cze 28, 2016 11:17:56 AM com.google.apphosting.vmruntime.VmApiProxyDelegate runSyncCall 
[INFO] 
[INFO] INFO: HTTP ApiProxy I/O error for memcache.Get: The target server failed to respond 
[INFO] 
[INFO] cze 28, 2016 11:17:56 AM com.google.appengine.api.memcache.LogAndContinueErrorHandler handleServiceError 
[INFO] 
[INFO] INFO: Service error in memcache 
[INFO] 
[INFO] com.google.appengine.api.memcache.MemcacheServiceException: RCP Failure for API call: memcache Get 
[INFO] 
[INFO] at com.google.apphosting.vmruntime.VmApiProxyDelegate.constructApiException(VmApiProxyDelegate.java:232) 
[INFO] 
[INFO] at com.google.apphosting.vmruntime.VmApiProxyDelegate.runSyncCall(VmApiProxyDelegate.java:195) 
[INFO] 
[INFO] at com.google.apphosting.vmruntime.VmApiProxyDelegate.makeApiCall(VmApiProxyDelegate.java:154) 
[INFO] 
[INFO] at com.google.apphosting.vmruntime.VmApiProxyDelegate.access$000(VmApiProxyDelegate.java:60) 
[INFO] 
[INFO] at com.google.apphosting.vmruntime.VmApiProxyDelegate$MakeSyncCall.call(VmApiProxyDelegate.java:436) 
[INFO] 
[INFO] at com.google.apphosting.vmruntime.VmApiProxyDelegate$MakeSyncCall.call(VmApiProxyDelegate.java:412) 
[INFO] 
[INFO] at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
[INFO] 
[INFO] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
[INFO] 
[INFO] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
[INFO] 
[INFO] at java.lang.Thread.run(Thread.java:745) 
[INFO] 
[INFO] 
[INFO] 
[INFO] DEBUG 2016-06-28 11:17:56,493 api_server.py:277] Handled datastore_v3.Get in 0.0000 
[INFO] cze 28, 2016 11:17:59 AM com.mysql.jdbc.log.Slf4JLogger logInfo 

答えて

1

この問題はローカルでのみ再生され、私も直面しています。私はそれがdevのサーバーによって実行されているローカルのmemcachedの設定が間違っていることが原因であると想定しています。

私は私のポイントを説明しようとします。私の場合、最初のリクエストは常に成功します。 最初のリクエストがあった場合、Apache HttpClientは新しい接続を開き、それをプールに入れます。 ソースコードがありますhttps://github.com/GoogleCloudPlatform/appengine-java-vm-runtime/blob/master/appengine-managed-runtime/src/main/java/com/google/apphosting/vmruntime/VmApiProxyDelegate.java

さらに10秒間隔で実行すると、それ以降のリクエストも成功します。しかし、10秒以内にリクエストがなかった場合、次のリクエストは失敗します。 これは、memcachedサービスがその側からの接続を閉じるために発生しますが、HttpClientはそのことを知らないためです。

VmApiProxyDelegate HttpClientは、60秒後にアイドル接続を閉じるように設定されています。したがって、10秒ではなく1分以上待つと、次のリクエストは失敗しません。この場合、HttpClientはまだ閉じられていない新しい接続を開きます。

この問題を回避するには、memcachedスタブ側から接続タイムアウトを設定するのが適切です。しかし、ドキュメンテーションによると、memcachedへのリクエストは失敗し、これらのエラーを処理する必要があります。だから、私はエラーハンドラといくつかの再試行メカニズムを追加するように提案します。

あなたの設定がすべて正常であれば、もちろん上記のすべてがあなたのケースに当てはまります。構成とコードの例を提供していなかったことを考慮して、私はすべてがOKであると仮定します。

関連する問題