Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.10.03;
Скачать: [xml.tar.bz2];

Вниз

"стратегия" общения с проблемным сервером   Найти похожие ветки 

 
Virgo_Style ©   (2010-07-06 18:37) [0]

есть ли какие-то рекомендации в этой области?

Т.е., к примеру, есть в интернете некий чуть живой сервер. Я сделал пять попыток чтения с timeout = 60 и вместо данных получил два раза по 500 и три таймаута.

Если следующий раз я хочу повысить свои шансы, что следует увеличивать в первую очередь и насколько?

Для определенности допустим, что общее время (число_попыток*таймаут) должно остаться прежним. Это чтобы отсечь вариант "бесконечность на бесконечность" :o)


 
DVM ©   (2010-07-06 19:06) [1]

Для твоего случая оптимальная стратегия недоступна ибо успешных попыток не было. Вот если бы они были, тогда другое дело. А так как не меняй параметры твои шансы они не повысят.


 
pit   (2010-07-06 19:27) [2]

хм...
Что такое 500? Ошибка 500 Bad Gateway? Кто ее пишет?

Если там фронтенд в виде nginx для отдачи статики, а бэкэндом стоит апач (распространенная комбинация) для отдачи динамики - то смотря что ты запрашиваешь.

1) ты запрашиваешь динамику. То есть, твой запрос к nginx будет перенаправлен к апачу, у самого nginx есть таймаут сколько он ждет ответа от апача, если не дождался - выдает Bad Gateway.

Время это скорее всего константа, нужно засечь время от запроса до получения сообщения Bad Gateway - оно в принципе должно быть одинаковым, например XX секунд. Таким образом отдачу динамики не стоит ждать более XX секунд. Даже если апач отдаст динамику после этого таймаута, то сам nginx уже разорвет коннект и когда-нибудь выдаст тебе 500.

Ситуация усложняется тем, что, видимо, сам nginx также перегружен, поскольку иногда происходит таймаут... Поэтому интерполируя рассчитываем время, которое установлено на nginx в качестве таймаута, умножает на 1,5 и получаем время ожидания динамики.

2) ты запрашиваешь статику. Тут ничего нельзя сказать, ибо запрос будет обрабатываться непосредственно nginx"ом и хрен оно его знает какие там таймауты. Скорее всего, срабатывал твой клиентский таймаут, в теории можно ждать очень долго, несколько часов, пока сработает таймаут TCP соединения встроенного в твою или удаленную ОС.


 
Anatoly Podgoretsky ©   (2010-07-06 20:43) [3]

> pit  (06.07.2010 19:27:02)  [2]

Ошибка 500 - это ошибка сервера, так она и называется это класс 5хх - ошибка
сервера.


 
Virgo_Style ©   (2010-07-06 22:46) [4]

В данном случае это 500 Internal Server Error. Прямо-таки ностальгия охватывает :-)

Статистика по конкретному серверу - это хорошо, но я бы предпочел пусть даже менее оптимальное, но более универсальное решение. Про запас :)
А еще мне лень править модуль для сбора статистики... но я этого не говорил :o)

Интуитивно понятно, что 300 запросов с таймаутом одна секунда - очень плохая идея, и один "пятиминутный" - тоже не есть хорошо. Должен, по идее, быть какой-то оптимум.

В принципе, можно поступить хитрее: задавать вместо числа попыток и таймаута - общее время (5 минут в нашем случае) и в течение этих пяти минут делать запросы. Если возник exception из-за таймаута - увеличить (удвоить, например) таймаут.
Но и в этом случае хорошо бы иметь какие-то ориентировочные значения. Тем более, что они могут перечеркнуть смысл этой затеи :)


 
Mystic ©   (2010-07-06 23:07) [5]


> Интуитивно понятно, что 300 запросов с таймаутом одна секунда
> - очень плохая идея, и один "пятиминутный" - тоже не есть
> хорошо. Должен, по идее, быть какой-то оптимум.


Ставь таймауты по экспоненте. Могно таймаут ограничить каким-то значением.


 
DVM ©   (2010-07-06 23:25) [6]


> Virgo_Style ©   (06.07.10 22:46) [4]

Мне кажется правильнее так:

1) Несколько попыток через интервал Т1
2) Если все безуспешны - делаем паузу на интервал Т2
3) Опять делаем несколько попыток через интервал Т1
4) Если все безуспешны - увеличиваем Т2 и опять ждем.

и.т.д

Т1 думаю не стоит увеличивать. а вот Т2 можно увеличивать, но до некоторого предела.


 
Pavia ©   (2010-07-07 00:06) [7]

Если сервер вернул 2 раза ошибку 500 то надо выставлять тайм повторы в минутах 1 2 4 и тд. Это надо чтобы снизить нагрузку на сервер . А повышать её бесполезно, от того что вы чаще опрашиваете сервер быстрее данные вы не получите.


 
brother ©   (2010-07-07 12:34) [8]

> тайм повторы в минутах 1 2 4 и тд

когда уже набежало 10 мин например, сервак проснулся, 10 тормозим ;)



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2010.10.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
10-1168354475
Priest
2007-01-09 17:54
2010.10.03
LoadPackage в COM сервере


2-1278433099
Delphist2
2010-07-06 20:18
2010.10.03
полупрозрачность


15-1278102588
Юрий
2010-07-03 00:29
2010.10.03
С днем рождения ! 3 июля 2010 суббота


4-1239779606
TAG
2009-04-15 11:13
2010.10.03
BIOS, ZwOpenSection и Vista


15-1278092476
DVM
2010-07-02 21:41
2010.10.03
Вопрос к владельцам, знатокам IPhone.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский