Как использовать Java на Google App Engine без чрезмерных мелких квот?

Очень простой код 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);

Единственная вещь, которую код выше говорит мне, состоит в том, что осмотр заголовка будет использовать больше, чем секунда (1 000 мс) процессорного времени, которое для Google является предупреждением на панели журнала. Это, кажется, очень простой запрос и все еще использует больше, чем секунда CPU.

Что я пропускаю?


Ниже изображения журналов для общих развлечений. 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");} }

7
задан Glorfindel 8 July 2019 в 16:05
поделиться

3 ответа

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

4
ответ дан 7 December 2019 в 14:30
поделиться

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

Неужели создание вашего объекта сервлета действительно медленное?

0
ответ дан 7 December 2019 в 14:30
поделиться

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

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

0
ответ дан 7 December 2019 в 14:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: