R>Меня интересует с какой скоростью сервер будет обрабатывать запросы, меня не интересует с какой скоростью он не будет обрабатывать запросы.
В разумных пределах, иначе это прямая допога в DDOS.
Негоже, если все корректные запросы должны сидеть и курить трубку, пока сервер не разберется с одним залетевшим некорректным.
R>
R>>Меня интересует с какой скоростью сервер будет обрабатывать запросы, меня не интересует с какой скоростью он не будет обрабатывать запросы.
J>В разумных пределах, иначе это прямая допога в DDOS. J>Негоже, если все корректные запросы должны сидеть и курить трубку, пока сервер не разберется с одним залетевшим некорректным.
Здравствуйте, Аноним, Вы писали:
А>Вы тут не упомянули самую малость А>А конкретно то что бросание исключения это вызов ядра, и последующий callback из ядра user-mode обработчика (ntdll!KiUserExceptionDispatcher) который уже начнет бродить по структурам в TEB'е вызывая обрабочики. И пара тысяч тактов CPU на всю эту мудотень.
Никто не запрещает реализовать поддержку исключений С++ без SEH (то есть, без поддержки OS фактически). Это очень положительно скажется на быстродействии при возникновении исключительной ситуации.
Здравствуйте, Roman Odaisky, Вы писали:
M>>Дык обычно кричат о накладных расходах именно те кто не знает как реализованны механизмы исключений.
RO>Вот я не знаю. Где об этом хорошо написано?
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, minorlogic, Вы писали:
M>>Дык обычно кричат о накладных расходах именно те кто не знает как реализованны механизмы исключений.
RO>Вот я не знаю. Где об этом хорошо написано?
Здравствуйте, Максим2006, Вы писали:
М>На on-line MSDN для MapViewOfFile нет вроде упоминаний о __try/__catch
Внимательнее.
To guard against EXCEPTION_IN_PAGE_ERROR exceptions, use structured exception handling to protect any code that writes to or reads from a memory mapped view of a file other than the page file. For more information, see Reading and Writing From a File View.
М>Ага, ограничение, ограничивающее использование исключений поэтому и отказываются
COM запрещает только передачу исключений через границу компонента. Внутри можно использовать, если это удобно с точки зрения дизайна конкретного компонента. Отказываются же, зачастую, из "религиозных" соображений, а отнюдь не из технических или архитектурных.
Здравствуйте, gear nuke, Вы писали:
GN> ...Пропущенно...
Вы приводите заведомо элементарный код... проблемма в том что не всегда (тривиальные случаи не берем) понятно что является исключительной ситуацией, а что нет.
Приветду свой пример из жизни:
Есть сервер, на котором запущено некоторое количество сервисов которые обрабатывают запросы пользователей. Сервисы разрабатывались отдельно друг от друга. Задача каждого сервиса(сервера) как можно быстреее восстановиться после сбоя. Естественно разработчики каждого сервера исходили из того что разрыв соединения это исключительная ситуация которая никогда не происходит и кидали всяческие Exceptionы. Так вот с одним из сервисов, по техническим причинам стало постоянно рваться соедининие. Остальные могли работать как ни в чем не бывало, но из-за так называемых "небольших" накладных расходов, вся система встала р%%%ком да так что мышкорй даже нельзя было пошевелить.
Кстати, подобное может произойти и при тривиальном чтении байта из памяти, если страница выгружена. И мало кто обращает на это внимание, хотя еще и HDD придётся ждать
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Отказ в обслуживании обычно происходит как раз из-за корректных (с точки зрения сервера) запросов, которые таковыми на самом деле не являются (эксплуатация уязвимости), либо их слишком много (DDoS — всего лишь способ усложнить политику отброса запросов).
То есть, для отказоустойчивой системы, обработка таких запросов должна быть штатной ситуацией. От некорректных нагрузки обычно не много — исключение быстрее обработается, чем бизнес-логика (запросы к БД, ФC и тп.)
R>> J>
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>с одним из сервисов, по техническим причинам стало постоянно рваться соедининие.
Вроде бы, таймаут измеряется в секундах.
ATP>из-за так называемых "небольших" накладных расходов, вся система встала р%%%ком да так что мышкорй даже нельзя было пошевелить.
Странно, приоритет обработчика мыши выше, чем любого юзермодного кода (по крайней мере в Windows). Проблема могда быть из-за TCP стека (в ядре).
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Здравствуйте, quodum, Вы писали:
Q>Здравствуйте, Максим2006, Вы писали:
М>>На on-line MSDN для MapViewOfFile нет вроде упоминаний о __try/__catch
Q>Внимательнее.
Q>
Q>To guard against EXCEPTION_IN_PAGE_ERROR exceptions, use structured exception handling to protect any code that writes to or reads from a memory mapped view of a file other than the page file. For more information, see Reading and Writing From a File View.
Спасибо.
М>>Ага, ограничение, ограничивающее использование исключений поэтому и отказываются
Q>COM запрещает только передачу исключений через границу компонента. Внутри можно использовать, если это удобно с точки зрения дизайна конкретного компонента. Отказываются же, зачастую, из "религиозных" соображений, а отнюдь не из технических или архитектурных.
Хотел бы я посмотреть на такой компонент, где намешаны коды возвратов и исключения
Пользование какого-то инструмента определяется его надобностью.. зачастую
Здравствуйте, Максим2006, Вы писали:
М>Хотел бы я посмотреть на такой компонент, где намешаны коды возвратов и исключения
Да ну брось, неужели не сталкивался? Впрочем, я имел в виду не "намешивание", а последовательное использование одной схемы внутри реализации и трансляцию в другую схему на границе компонента (библиотеки).
М>Пользование какого-то инструмента определяется его надобностью.. зачастую
Бывает и так, и последнее время, к счастью, всё чаще. Но, увы, отнюдь не всегда...
Re[7]: DoS
От:
Аноним
Дата:
15.07.08 22:45
Оценка:
GN>То есть, для отказоустойчивой системы, обработка таких запросов должна быть штатной ситуацией. От некорректных нагрузки обычно не много — исключение быстрее обработается, чем бизнес-логика (запросы к БД, ФC и тп.)
Бизнес логика она обычно после авторизации клиента идет. return false из процедуры логина будет работать быстрее throw IncorrectLogin(); в исполнении MSVS и сервер будет менее чувствителен к DDoS'у рандомными логинами.
Re[3]: Правда об оверхеде исключений.
От:
Аноним
Дата:
15.07.08 22:52
Оценка:
GN>Странно, приоритет обработчика мыши выше, чем любого юзермодного кода (по крайней мере в Windows).
Это в теории. На практике
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Здравствуйте, gear nuke, Вы писали:
GN>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>с одним из сервисов, по техническим причинам стало постоянно рваться соедининие.
GN>Вроде бы, таймаут измеряется в секундах.
Это в теории , на практике бывает что он практически отсутствует.
ATP>>из-за так называемых "небольших" накладных расходов, вся система встала р%%%ком да так что мышкорй даже нельзя было пошевелить.
GN>Странно, приоритет обработчика мыши выше, чем любого юзермодного кода (по крайней мере в Windows). Проблема могда быть из-за TCP стека (в ядре).
Ну это, так сказать, преувеличение. На самом деле мышь дергалась, а все ресурсы системы ушли на обработку исключений.
Здравствуйте, Аноним, Вы писали:
M>>>Дык обычно кричат о накладных расходах именно те кто не знает как реализованны механизмы исключений. RO>>Вот я не знаю. Где об этом хорошо написано?
А>http://www.microsoft.com/msj/0197/Exception/Exception.aspx
Интересно. Ну это майкрософтовские. А остальные механизмы?
Здравствуйте, Аноним, Вы писали:
GN>>То есть, для отказоустойчивой системы, обработка таких запросов должна быть штатной ситуацией. От некорректных нагрузки обычно не много — исключение быстрее обработается, чем бизнес-логика (запросы к БД, ФC и тп.)
А>Бизнес логика она обычно после авторизации клиента идет. return false из процедуры логина будет работать быстрее throw IncorrectLogin(); в исполнении MSVS и сервер будет менее чувствителен к DDoS'у рандомными логинами.
Так тебе же и пытаются сказать, что даже в исполнении MSVS этот throw будет только чуть-чуть медленнее.
Хотя ошибка авторизации — это вовсе не исключительная ситуация.