Одной из огромных проблем, которая доставила нам много горя, было использование модулей и классов в нашем основном веб-сервисе. Это было до того, как мы действительно узнали, что мы делаем, и с тех пор было исправлено.
Большая проблема с использованием модулей состоит в том, что по умолчанию любые переменные уровня модуля видны каждому экземпляру рабочего процесса ASP. Мы передаем несколько наборов данных и манипулируем ими, а затем возвращаем их клиенту. Поскольку мы использовали модули, переменные, содержащие эти наборы данных, были повреждены в результате нескольких вызовов, происходящих одновременно.
Это не было поймано в тестировании и было трудно воспроизвести, пока мы не выяснили, как правильно загрузить тестирование наших веб-сервисов. Потребовалось около 10-20 запросов в секунду, прежде чем мы смогли точно воспроизвести его.
В конце мы просто изменили все модули на классы, а затем использовали эти классы вместо обращений к модулям, что устранило эту проблему параллелизма, поскольку у каждого экземпляра класса была своя собственная копия набора данных в памяти.