Лучшие практики для [закрытых] тайм-аутов веб-сервиса

Убедившись, что вы знаете список всех производителей, вы можете использовать условное агрегирование. Следующий запрос демонстрирует, как это сделать с двумя производителями, A и B:

SELECT
    DATE_FORMAT(o.made, '%b-%y'),
    SUM(CASE WHEN m.name = 'Manufacturer A' THEN i.price ELSE 0 END) "Manufacturer A",
    SUM(CASE WHEN m.name = 'Manufacturer B' THEN i.price ELSE 0 END) "Manufacturer B"
FROM
    orders o
    LEFT JOIN items i
        ON  o.order_id = i.id
    LEFT JOIN manufacters m
        ON manufacter_id = m.id
GROUP BY month(o.made)
13
задан MMind 5 November 2008 в 19:30
поделиться

4 ответа

Этот вопрос и те связанные с в ответах на него, могли бы помочь: Есть ли некоторый промышленный стандарт в течение недопустимого времени отклика веб-приложения?

Несколько тангенциальный к Вашему вопросу (никакие временные интервалы, извините), но я подозреваю полезный для Вашей работы: общий подход к тайм-аутам должен сбалансировать их с таймеров "возврата".
Это проходит примерно так: первые приводят к таймауту сервиса времена, не волнуйтесь об этом. Во второй раз подряд сервис испытывает таймаут, не потрудитесь называть его в течение секунд N. В третий раз подряд сервис испытывает таймаут, не называйте его в течение секунд N+1. Затем N+2, N+3, N+5, N+8, и т.д., пока Вы не достигаете некоторого максимального предела M.

Счетчик тайм-аута сбрасывается, когда Вы получаете допустимый ответ.

Я использую последовательность Fibbonacci для увеличения периода времени "возврата" здесь, но конечно можно использовать любую другую подходящую функцию - точка быть, если сервис, который Вы пробуете, продолжает синхронизировать Вас, Вы, "вера" в него становится меньшей и меньшей, таким образом, Вы тратите меньше ресурсов, пытающихся добираться до него и стучать в дверь более редко. Это могло бы помочь сервису на другой конец, который мог просто быть перегружен, и перезапрос просто усугубляет положение, и он увеличит Ваше время отклика, так как Вы не будете ждать сервис, который вряд ли ответит.

4
ответ дан 1 December 2019 в 23:49
поделиться

Возьмите объем данных, Вы передаете через свой веб-сервис видение, сколько времени процесс берет.

Добавьте 60 secs к тому числу и тесту.

Если можно добраться, это к тайм-ауту на исправном соединении затем добавляет еще 30 секунд.

промывка и повторение.

1
ответ дан 1 December 2019 в 23:49
поделиться

Этот материал приблизительно 30 + вторые тайм-ауты являются смешным советом, IMO. Ваши тайм-ауты должны составить приблизительно 3 секунды. Да. Три. Число после два и прежде четыре. Если Вы создаете приложение на основе SOA, то ОПРЕДЕЛЕННО 3 секунды, или меньше.

Подумайте об этом... пользователь Вашего приложения ожидает ОБЩЕЕ время отклика приблизительно в пять секунд или меньше (предпочтительно приблизительно три). Если КАЖДЫЙ ОТДЕЛЬНЫЙ СЛУЖЕБНЫЙ ВЫЗОВ берет больше чем несколько* миллисекунды* для возврата, Вы политы из шланга. Ожидание 30 + секунды для ОДНОГО сервиса для возврата является вечностью. Пользователь никогда не будет ожидать вокруг этого долго. Плюс, если Вы знаете, что они, как предполагается, возвращаются в пододном втором диапазоне, какой смысл того, чтобы ожидать в течение еще 30 или больше секунд для передачи сигналов о состоянии ошибки; это не собирается волшебно работать где, когда это не сделало 28 секунд назад. Если Ваше приложение имеет дикое колебание в среднее время отклика с пододной секунды до более чем 30 секунд, что-то было разработано неправильно. Вы могли бы думать о некотором кэшировании или чем-то.

11
ответ дан 1 December 2019 в 23:49
поделиться

Мы обычно занимаем ожидаемое время отклика для того веб-сервиса (как зарегистрировано в нашу интерфейсную спецификацию) и добавляем 30 секунд к нему.

Затем мы контролируем журналы во время UAT, чтобы видеть, существуют ли какие-либо шаблоны (например, определенные занимающие много времени вызовы DB) и изменяются как соответствующие.

1
ответ дан 1 December 2019 в 23:49
поделиться
Другие вопросы по тегам:

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