Как использовать Java в Google App Engine, не превышая минутных квот?

StackOverflow https://stackoverflow.com/questions/2535607

  •  22-09-2019
  •  | 
  •  

Вопрос

Очень простой Java-код внутри сервлета doGet() требует более секунды процессорного времени на GAE.Я прочитал некоторую документацию, связанную с квотами, и, видимо, не делаю ничего плохого.

//Request the user Agent info
String userAgent = req.getHeader("User-Agent");

Я хотел знать, что больше всего использует процессор, я использую рекомендации Google.

    //The two lines below will get the CPU before requesting User-Agent Information
    QuotaService qs = QuotaServiceFactory.getQuotaService();
    long start = qs.getCpuTimeInMegaCycles();

    //Request the user Agent info
    String userAgent = req.getHeader("User-Agent");

    //The three lines below will get the CPU after requesting User-Agent Information 
    // and informed it to the application log.
    long end = qs.getCpuTimeInMegaCycles();
    double cpuSeconds = qs.convertMegacyclesToCpuSeconds(end - start);
    log.warning("CPU Seconds on geting User Agent: " + cpuSeconds);

Единственное, что говорит мне приведенный выше код, это то, что проверка заголовка будет использовать более секунды (1000 мс) процессорного времени, что для Google является предупреждением на панели журнала.Кажется, это очень простой запрос, и он все равно использует процессор более секунды.

Чего мне не хватает?


Ниже изображение логов для всеобщего развлечения.logs for Google App Engine Slow Reports

Я публикую полный код для всеобщего блага.

@SuppressWarnings("serial")
public class R2CComingSoonSiteServlet extends HttpServlet {

private static final Logger log = Logger.getLogger(R2CComingSoonSiteServlet.class.getName());

public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
    //The two lines below will get the CPU before requesting User-Agent Information
    QuotaService qs = QuotaServiceFactory.getQuotaService();
    long start = qs.getCpuTimeInMegaCycles();

    //Request the user Agent info
    String userAgent = req.getHeader("User-Agent");

    //The three lines below will get the CPU after requesting User-Agent Information 
    // and informed it to the application log.
    long end = qs.getCpuTimeInMegaCycles();
    double cpuSeconds = qs.convertMegacyclesToCpuSeconds(end - start);
    log.warning("CPU Seconds on geting User Agent: " + cpuSeconds);

    userAgent = userAgent.toLowerCase();
    if(userAgent.contains("iphone"))
        resp.sendRedirect("/mobIndex.html");
    else
        resp.sendRedirect("/index.html");} }
Это было полезно?

Решение

В App Engine больше нет поминутных квот.Любые сообщения, относящиеся к ним, устарели.Если вы хотите лучше профилировать использование вашего ЦП, вы можете попробовать недавно выпущенный статистика приложений для Java.

Другие советы

Ваши журналы показывают, что иногда это происходит медленно.

Действительно ли построение вашего объекта сервлета происходит медленно?

Единственное, что говорит мне приведенный выше код, это то, что проверка заголовка будет использовать более секунды (1000 мс) процессорного времени, что для Google является предупреждением на панели журнала.Кажется, это очень простой запрос, и он все равно использует процессор более секунды.

Это также происходит без вызовов API квот?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top