|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
Shocker.Pro, я имел в виду не обработку полученного с сервера ответа HandleRequestResult(result), а само считывание reader.ReadToEndAsync(). хотя оно, по идее, тоже асинхронное, да, я туплю... тогда всё упирается чисто в мой 4 ядерный проц, надо брать новый. тогда остался загадкой только выбор количества соединений ServicePointManager.DefaultConnectionLimit = 9, который зависит хз от чего и должен быть хз каким ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 13:51 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
qlewerok reader.ReadToEndAsync(). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 13:56 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
Shocker.Pro qlewerok reader.ReadToEndAsync(). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 13:59 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
qlewerok нужно 100 потоков, по потоку на соединение, в каждом происходит обращение, получение ответа, обработка. если так нельзя\не принято, то почему? Ну, потому что прочитай, например, в книге Рихтера "CLR via C#" как работает асинхронный I/O и поймешь, почему его не надо делать в отдельном потоке. Вкратце - когда ты вызываешь операцию I/O асинхронно, то она происходит моментально и приложение просто продолжает работать дальше. Когда же вызванная операция (чтение, запись, запрос по web, и т.п.) действительно выполнена OS, то рантайн сам вызывает callback, который ты ему передал при вызове этой операции. Код с async/await это просто удобная обертка поверх этого, чтобы руками не писать и никуда не передавать миллионы этих callback-ов. А если ты вместо этого создашь руками (или возьмешь из пула) поток и вызовешь в нем I/O синхронно, то тогда у тебя весь этот поток на все время I/O будет заблокирован. А поток это довольно-таки дорогостоящий и ограниченный ресурс OS, и если у тебя таких заблокированных, хоть и на время, потоков будет много, то будет плохо. Я сам еще давно лично наблюдал, как у нас виндовый сервер впадал в кому, когда какой-то индусский код безо всякого ума вручную создавал чуть больше всего лишь 900 потоков. Для этого ThreadPool и придумали - во-первых, чтобы не создавать всякий раз потоки с нуля руками (т.к. это дорого), а во-вторых (что в нашем этом случае важнее) чтобы не дать приложению создавать слишком много потоков. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 14:03 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
всё-таки бутылочное горлышко кроется в Код: vbnet 1.
при 9 вроде работает, при 10 начинает сыпаться часть соединений, количество падающих соединений увеличивается при увеличении максимального числа соединений Код: vbnet 1.
в интернете люди как-то выставляют его в сотни. у меня проц i5 3570k с 4 ядрами, если это как-то поможет... Shocker.Pro, во всём интернете ни одного примера на vb.net, как правильно в впихнуть LongRunning. похоже, было собрание программистов, где решили забросить vb.net, на которое меня не позвали... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 15:34 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
qlewerok похоже, было собрание программистов, где решили забросить vb.net ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 15:45 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
qlewerok при 10 начинает сыпаться часть соединений ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 15:45 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
Shocker.ProПо NET5 его не будет вообщеу меня есть вы) Shocker.Proс какой ошибкой? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 17:01 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
qlewerok у меня есть вы) По ошибке - ну и причем тут твой код? Это тебя либо удаленный сервер отшивает, либо твоя промежуточная инфраструктура ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 17:04 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
Shocker.Pro удаленный сервер отшивает ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 17:12 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
qlewerok, Скорее всего, сервер распознаёт твой перформанс, как DOS-атаку. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 17:16 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
fkthat перформанс ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 17:16 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
fkthatСкорее всего, сервертогда миссия меняется) как все вот эти параллельные обращения к серверу выполнять с заданным в миллисекундах интервалом?) чтобы не ддосить и при этом не останавливать всю программу... запускать таймер и проверять его или что-то сложнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 17:28 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
qlewerok как все вот эти параллельные обращения к серверу выполнять с заданным в миллисекундах интервалом Да я же тебе всю дорогу объясняю, что тебе не нужны паралельные обращения. При асинхронных вызовах они и так будут "параллельные" - каждый запрос будет отправляться сразу же, а не ждать, когда закончится предыдущий. В пределах установленных лимитов на одновременное число соединений, конечно - но тут ты уже ничего сделать не сможешь, т.к., сам сервер, как ты видишь, при слишком большом числе коннектов тебя отошьет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 17:48 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
qlewerok тогда миссия меняется) как все вот эти параллельные обращения к серверу выполнять с заданным в миллисекундах интервалом?) чтобы не ддосить и при этом не останавливать всю программу... запускать таймер и проверять его или что-то сложнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 18:06 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
qlewerok, Вот тебе еще пример: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
ВыхлопСто потоков: 6467 Сто запросов: асинхронно: 1517 Как видишь, без всякого распараллеливания получилось быстрее более чем в 4 раза. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 18:23 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
fkthat Как видишь, без всякого распараллеливания получилось быстрее более чем в 4 раза. Кстати, попробовал этот код еще меняя DefaultConnectionLimit (от 2 до 10), и по времени выполнения изменений вообще никаких - ни в абсолютных значениях, ни в относительных. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 18:53 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
qlewerok, всё смешалось, многопоточность, параллельность про асинхронные операции даже не слышал небось, да ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 19:49 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
fkthat, хотел посмореть, что за сишарп ваш такой заморский, но приведенный код в консоли не выводит ничего. так работает: Код: c# 1.
а так уже игнорит: Код: c# 1.
fkthatменяя DefaultConnectionLimit (от 2 до 10), по времени выполнения изменений вообще никакихспециально перепроверил. у меня с изменением соединений с 2 до 9 время выполнения уменьшается примерно в 3 раза ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 19:52 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
qlewerok хотел посмореть, что за сишарп ваш такой заморский это не си шарп заморский, это твой бейсик мазохический с ужасным синтаксисом прекрати заниматься мазохизмом, переходи на гораздо более красивый, понятный, логичный и лаконичный си шарп ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 19:57 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
qlewerok хотел посмореть, что за сишарп ваш такой заморский, но приведенный код в консоли не выводит ничего У тебя какая версия дотнета и VS? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 20:14 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 20:23 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
qlewerok, А как ты сам код на C# пробовал-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 20:37 |
|
параллельные запросы HttpWebRequest
|
|||
---|---|---|---|
#18+
fkthat, создал проект, выбрал язык C# для windows Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2020, 20:43 |
|
|
start [/forum/topic.php?fid=20&msg=40025689&tid=1398409]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 153ms |
0 / 0 |