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 已为您将范围缩小到三行:

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 回答