Re[2]: AppDomain и assembly из другого Framework'a
От:
Аноним
Дата:
21.09.06 08:30
Оценка:
Здравствуйте, akasoft, Вы писали:
A>Здравствуйте, <Аноним>, Вы писали:
А>>Вообще, возможно ли такое?
A>Полагаю, нет. Нужно пересобрать под FW 2.0.
Вообще проблема состоит не в этом. Как выясняется, под нагрузкой (много параллельных потоков — порядка 50) делают кучу HttpWebRequest — HttpWebResponse запросов. Так вот, под .NET 1.1 все в порядке, все запросы обрабатываются нормально, под .NET 2.0 — порядка 10% запросов вылетают с timeout. Это в тестовом приложении. А в реальном — через три-четыре часа после работы под нагрузкой (LoadTest) ВСЕ запросы вылетают с таймаутами, причем точно такое же соседнее приложение без нагрузки не испытывает таких проблем. Эта проблема появилась после миграции с .NET 1.1 на .NET 2.0. Вот сидим думаем, как это можно решить. Одна из идей было использовать HttpWebRequest — HttpWebResponse из старого фрэймворка.
Re[3]: AppDomain и assembly из другого Framework'a
А>Как выясняется, под нагрузкой (много параллельных потоков — порядка 50) делают кучу HttpWebRequest — HttpWebResponse запросов. Так вот, под .NET 1.1 все в порядке, все запросы обрабатываются нормально, под .NET 2.0 — порядка 10% запросов вылетают с timeout...
Re[4]: AppDomain и assembly из другого Framework'a
От:
Аноним
Дата:
21.09.06 15:24
Оценка:
Здравствуйте, akasoft, Вы писали:
A>Здравствуйте, <Аноним>, Вы писали:
А>>Как выясняется, под нагрузкой (много параллельных потоков — порядка 50) делают кучу HttpWebRequest — HttpWebResponse запросов. Так вот, под .NET 1.1 все в порядке, все запросы обрабатываются нормально, под .NET 2.0 — порядка 10% запросов вылетают с timeout...
A>Не ты первый, не ты последний. Тут есть решение
Объяснение, к сожалению, не принимается. Потому как таймауты возникают только в 2.0 и возникают они для любых адресов и типов серверов (хоть ASP.NET на локали, хоть yahoo.com). Как я понимаю это объяснение срабатывает только для ASP.NET серверов.
Re[5]: AppDomain и assembly из другого Framework'a
Здравствуйте, Аноним, Вы писали:
А>Объяснение, к сожалению, не принимается. Потому как таймауты возникают только в 2.0 и возникают они для любых адресов и типов серверов (хоть ASP.NET на локали, хоть yahoo.com). Как я понимаю это объяснение срабатывает только для ASP.NET серверов.
ASP.NET здесь совершенно нипричем. Ограничение на два коннекта задается в WinINnet. Это либа через которую работают практичски все продукты MS для доступа по HTTP/HTTPS. Видимо в NET 2.0 изменили работу с WinINet. Похоже HttpWebRequest теряет хендлы на WinINet объекты, поэтому и вылетает по таймауту. Это стандартная ситуация .
В WinINet есть возможность изменить данные настройки(INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER/INTERNET_OPTION_MAX_CONNS_PER_SERVER
) через InternetSetOption. Но как сделать в .NET я не знаю. Также эти установки можно прописать в реестре и тогда они будут устанавливаться автоматичски для всех соединений.