1

パフォーマンスに問題がありますが、それがどこから来るのかわかりません。

createLogoutURL と最初のデータストア クエリの間のギャップは非常に大きく、次のコード パッセージの間です。

loginInfo.setLogoutUrl(userService.createLogoutURL(requestUri));
...
ch.zhaw.ams.server.auth.user.User userAms = DatabaseHelper.findByParama(user.getEmail(), "emailAddress",
                    "String", ch.zhaw.ams.server.auth.user.User.class);

ここに画像の説明を入力

@Override
public GoogleLoginInfo login(String requestUri) {
    UserService userService = UserServiceFactory.getUserService();
    User user = userService.getCurrentUser();

    GoogleLoginInfo loginInfo = new GoogleLoginInfo();

    if (user != null) {
        loginInfo.setLoggedIn(true);
        loginInfo.setEmailAddress(user.getEmail());
        loginInfo.setNickname(user.getNickname());
        loginInfo.setLogoutUrl(userService.createLogoutURL(requestUri));
        loginInfo.setIsGoogleLogin(true);

        ch.zhaw.ams.server.auth.user.User userAms = DatabaseHelper.findByParama(user.getEmail(), "emailAddress",
                "String", ch.zhaw.ams.server.auth.user.User.class);
        if (userAms != null) {
            loginInfo.setFirstname(userAms.getFirstName());
            loginInfo.setLastname(userAms.getLastName());
        }

        // Set Memcache
        try {
            SessionCache.setupCache(user.getEmail());
            loginInfo.setIsCached(true);
        } catch (CacheException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            loginInfo.setIsCached(false);
        }

    } else {
        loginInfo.setLoggedIn(false);
        loginInfo.setLoginUrl(userService.createLoginURL(requestUri));
    }
    return loginInfo;
}

なぜそんなに遅いのか誰にも分かりますか?

4

1 に答える 1

0

プラス面として、appstats はそれを 3 行に絞り込みました。

loginInfo.setLogoutUrl(userService.createLogoutURL(requestUri));

loginInfo.setIsGoogleLogin(true);

ch.zhaw.ams.server.auth.user.User userAms = DatabaseHelper.findByParama(user.getEmail(), "emailAddress",
            "String", ch.zhaw.ams.server.auth.user.User.class)

おそらくいじって、どの行が遅延を引き起こしているかを突き止めようとすることができます。クラス ch.zhaw.ams.server.auth.user.User.class をロードするのはこれが初めてだと思います。このクラスが原因で、他のクラスが読み込まれる可能性があります。表示される長い遅延は、クラスの読み込み時間にすぎない可能性があります。

これらのクラスの一部をロードするスタートアップ ハンドラーを追加できる可能性があるため、まれにしか表示されないことを願っていますが、GAE での Java クラスのロード時間について多くの苦情が寄せられます。GAE で完全に解決できる問題ではありません。

于 2013-09-21T16:22:45.843 に答える