Доброго времени суток. Заранее прошу не кидаться гнилыми помидорами и не разводить холиваров на тему «Mono не нужен», «Это всё проделки сатаны» и тд. Речь здесь пойдёт о платформе Mono, а именно сложилась нехорошая ситуация (при использовании на сервере версии 2.8 и выше): не удаляются сессии (у которых истёк таймаут) до тех пор, пока есть хотя бы одна активная сесиия. т.е., допустим, на сервере висит 2 неактивных сесии и истёкшим таймаутом и 1 активная. по идее они должны были удалиться из памяти, вызвать событие Session_End из Global (используется режим «InProc») и всё было бы прекрасно (а так и было ещё в версии 2.6.7). Но, эти две неактивные сессии не удаляются до тех пор, пока не истечёт таймаут последней активной. т.е. они удалятся только все вместе одновременно.
соответственно, при активном трафике и даже, в принципе, небольшой посещаемости веб-ресурса - сессии накапливаются мёртвым грузом, потребляемая озу вырастает по экспоненте, сервер падает замертво до очередной перезагрузки.
пробовал собирать Mono из исходников, при этом заменяя файл SessionInProcHandler.cs (./mcs/class/System.Web/System.Web.SessionState_2.0/SessionInProcHandler.cs) на версию из Mono 2.6.7 - не помогает.
нигде на эту тему ничего не написано. только видел несколько постов на со схожей проблемой, решения не нашёл.
может кто-нибудь здесь использует mono для своих веб-приложений и с подобным сталкивался? надеюсь на помощь, заранее благодарен.