We have developed a vacation rental application in ASP.NET with SQL server as DB. Used .NET 3.5 with Entity Framework. Currently QA test this with P4 machine with 2GB RAM. Looks like the processor utilization goes up to 50% for every request. All our DB retrieval timings are < 1 sec. The page load is very slow. We applied all performance tips at IIS level (Compression, Keep Connection Live) and caching to limit the bandwidth (which is normal at 300-500 KB).
We use Telerik RAD Controls for most of the pages. It has been decided that the server hardware is the bottleneck (from HTTP Analyzer measuring the Wait time).
We expect 100 concurrent users 100-200 transactions per second. We run both the IIS & SQL server in the same server at well & hosted in asphostportal.com
The legacy application responds very well at the same server - No EF, Telerik Controls etc.
Can anyone recommend good hardware configuration RAM, CPU Speed etc & what other techniques to speed up the performance?
Move SQL onto a dedicated machine.
Or restrict the memory for SQL so that there is enough for other processes to run.
For an APP with any sort of reasonable load we've never found that sharing the SQL machine with any other server-side Services works ...
Look at tuning your SQL queries. There are profilers which will tell you a) which queries are taking the longest and b) which queries are being executed most often. (It might be that shaving a few milliseconds off the most popular query is far more beneficial that improving a slow running query that only runs once or twice a day )
If you don't have strong SQL skills in-house then it is likely that using a Profiler to identify the queries and then adding an index will dramatically improve performance. Folk here can help with tuning, once you have figured out what needs it the most
If you are using dynamic SQL (i.e. you make a SQL text string like
SELECT StartDate, RentalProperty, ...
FROM Properties
WHERE StartDate BETWEEN '20150601' AND '20150701'
i.e. INCLUDING the parameters to the WHERE clause filters, then it is likely you will have to radically alter the way you query SQL Server to improve performance.