У меня есть crawlerbot, который загружает различные страницы параллельно, используя parallel.for и parallel.foreach. MaxDegreeOfParallelism настроен примерно на 20, поскольку увеличение его, похоже, не улучшает производительность, и я не хочу перегружать любые веб-серверы.Консольное приложение медленнее, чем приложение asp.net
Когда я запускаю сканирование с веб-сайта ASP.NET (из всех мест), он работает с приемлемой производительностью, и все это занимает несколько часов. Из-за проблем с дизайном этой настройки я меняю это, поэтому я могу запустить его с консоли.
Весь код, в котором я нуждаюсь, находится в dll, к которому можно получить доступ как на веб-сайте, так и на консольном приложении.
Нет вывода на консоль, за исключением сообщения о запуске.
Проблема в том, что когда я запускаю ее с консоли (или от отладчика), она занимает примерно в 10 раз больше (!), Чем при запуске ее с веб-сайта ASP.NET. Мне было бы легче понять, будет ли версия ASP.NET медленнее, чем консоль.
Почему это так или как я могу отладить это или выяснить, почему это так или исправить проблему?
Редактировать: Это также случается при попытке обоих вариантов через отладчик визуальной студии. Выход в окно «Выход» из «Отладки» похож на:
Поток '' (0x1d34) вышел с кодом 0 (0x0). Поток '' (0xf20) вышел с кодом 0 (0x0). Поток '' (0x3414) вышел с кодом 0 (0x0). Поток '' (0x35c8) вышел с кодом 0 (0x0). Поток '' (0xdc) вышел с кодом 0 (0x0). Поток '' (0x1c98) вышел с кодом 0 (0x0). Поток '' (0x3308) вышел с кодом 0 (0x0). Поток '' (0x2b00) вышел с кодом 0 (0x0). Поток '' (0x2f7c) вышел с кодом 0 (0x0). Поток '' (0x345c) вышел с кодом 0 (0x0). Поток '' (0x2a18) вышел с кодом 0 (0x0). Поток '' (0x138) вышел с кодом 0 (0x0). Поток '' (0x3650) вышел с кодом 0 (0x0). Поток '' (0x376c) вышел с кодом 0 (0x0).
за исключением того, что в случае ASP.NET этот текст написан примерно в 10 раз быстрее.
Возможно, также стоит отметить, что dll вызывает 7zip через COM для каждой загруженной страницы, чтобы сжать его.
Вы используете код на одном и том же оборудовании в обоих случаях? – Joni
Да, все это работает на моей машине разработки. – tomsv
Загружает ли он много страниц с того же сервера? Каковы значения ['ServicePointManager.DefaultConnectionLimit'] (http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit.aspx) и [' ServicePointManager.MaxServicePoints'] (http: //msdn.microsoft.com/en-us/library/system.net.servicepointmanager.maxservicepoints.aspx) в обеих средах? Вы пытались выяснить, где именно происходит замедление? – svick