Здравствуйте, vaa, Вы писали:
vaa>Здравствуйте, vasmann, Вы писали:
V>> Это ошибка. Может привести к исчерпанию хендлов на процессе (зависит, понятно от частоты и времени непрерывной работы приложения)
vaa>Почитал, там нет слов "хендлов", "на процессе".
Сокет — хендл, ну так было. Может что-то поменяли, но сомневаюсь. Их (сокетов) под 65 тысяч, на деле, для процесса — меньше, потому, что система еще отбирает. При этом это общесистемный ресурс.
vaa>сколько раз можно вызвать http-запрос с клиента, чтобы такое случилось? vaa>Скорее сервак откажет в обслуживании такого количества запросов.
У нас при 4-5 тысячах запросах в секунду начинала возникать ситуация когда ни новые запросы мы отправить не можем, ни клиенты уже не могут подключиться (потому что как и сказал выше — ресурс общий на систему). Выявилась проблема очень быстро, как раз когда "веб апи запросы воткнули без кеширований и прочих ухищрений", исправилась не сразу, потому что и нагрузки были пиковыми — не постоянно 4-5. На саму проблему зашли именно через поддержку — начали поступать жалобы от клиентов, что не могут подключиться, хотя сервер молотил, вроде бы как + были моменты когда сама поддержка не могла зайти на сервер (по той же причине — исчерпались сокеты). При 2-3 запросах в минуту — проблема может и не возникнуть.
Тем не менее ключевое — классы нужно использовать правильно, конкретно HttpClient спроектирован так, что его легко использовать не правильно, а узнать о неправильности можно уже в проде. Хотя достаточно, лично с моей точки зрения, этот аспект в самом начале выделить секцией Warning и жирным текстом подсветить, а не так как сейчас, где-то мимолётом написан GoodController, а перед ним такое мало важное сообщение, что может возникнуть истощение по сокетам — ерунда, какая.