Поток стекирования IIS
-
09-09-2019 - |
Вопрос
Мы отслеживали ошибку в моем веб-приложении WCF (W2K3 IIS), которая приводила к переполнению стека.
Чтобы исправить это, мне нужно было увеличить стек моего приложения, создав поток с тем объемом памяти, который я хотел выделить.
Но что происходит с дочерними потоками?Мое приложение создает много потоков, унаследуют ли они значение или мне придется присваивать каждому отдельному потоку новое значение?
Редактировать:Если я запускаю службы (WCF) в качестве хоста консоли, они работают просто отлично.Кроме того, если я изменю стек w3wp.exe (с помощью EDITBIN), они также отлично работают в IIS.
Итак, мне нужно увеличить стек.Я знаю, что могу создать поток с размером стека (есть другой способ?), Но мне нужно знать, что происходит с дочерними потоками.
Редактировать 2:Нам нужно определить несколько БОЛЬШИХ векторов, которые приводят к переполнению стека.Так что это не ошибка в нашей системе.Мне действительно нужно (есть) увеличить стек
Решение
Попробовав это сам, я могу сказать "да"!Дочерние потоки сохраняют объем стека, установленный в родительском потоке.
Другие советы
Это звучит так, как будто вам нужно более тщательно подумать о почему вы получаете переполнение стека вместо того, чтобы просто выделять больше памяти.
Есть ли какая-то функция с огромным количеством локальных переменных или массив, который собирается в стеке?
Вы уверены, что у вас где-нибудь не происходит утечка из-за непреднамеренных рекурсивных циклов?
-Адам