@sysrpl: I can't comment on DevExpress specifically, but based on my experience developing ASP.NET+SQL Server applications, I know that forgetting to wrap a single line of code in a using statement can cause your web application to come to a crawl with even a single user.

I would venture to guess that the problem you are describing is being caused by a database connection that is never closed. I'm not saying that this is code that's part of the DevExpress framework or your custom code. Nevertheless, even poorly-written ASP.NET frameworks that otherwise avoid the "orphaned connection" scenario that I described above can stay relatively performant with well more than 4 users.

Whenever your application gets into the state that you described, you should check how many open connections there are with the database in question. You can do that by executing this script from SSMS:

SELECT db_name(dbid) as DatabaseName, count(dbid) as NoOfConnections,
loginame as LoginName
FROM sys.sysprocesses
WHERE dbid > 0
GROUP BY dbid, loginame

From: http://www.sqlservercurry.com/2008/03/how-to-see-active-connections-for-each.html

Good luck.