Question

My company is upgrading the app/web server from Windows 2003 to Windows 2008 (mainly because hosting companies don't offer 2003 anymore, and we need new hardware to gain performance).

Our app is written in Delphi 7 (CGI modules), and the database is (this is kind of embarassing) DBF files (accesed using the HalcyonDataSet component).

Our old server is:

  • Windows 2003 Web SP2 (IIS6) - 32 bit
  • 2 GB RAM
  • Intel Xeon CPU 3040 @1.86GHz (Dual Core)
  • 250 GB SATA RAID 1 hard drive

The new server is:

  • Windows 2008 Web R2 (IIS7) - 64 bit
  • 4 GB RAM
  • Intel Xeon CPU 3320 @2.50GHz (Quad Core)
  • 500 GB SATA RAID 1 hard drive

The app mainly needs high read speeds, since we have to secuentially loop over the tables to load the information (yes, we use indexes to find positions).

The production server load is normally below 5 requests per second (quite few), except when google is indexing (up to 10-20). Sometimes the requests take some time (searchs, sales listings...).

PROBLEM: We are having serious performance issues. The new server works fine, but requests now need as much as double the time to complete. The bad thing is that the 4 cores appear to be quite idle during execution.

I enabled 32 bit apps in the application pool. I have tried creating a web garden (with 4 worker processes), and launching 4 simultaneous, cpu intensive CGIs, but the old server still beats the new one. I have tried to increase the priority of the worker processes, it made no difference.

Does anybody have an idea of what can be happening, and what I can do to improve performance on the new server?

(besides rewriting our app, obviously)

Thanks in advance!

Was it helpful?

Solution 2

After much testing, we have reached the conclusion that there must be a restriction in how IIS treats CGI executables (possibly, penalizing disk access with security checks).

We tried launching console executables, that basically did the same than the CGIs (accessing the same FoxPro database), and the execution times were roughly the same (although they should have improved, but at least they were not worse).

Solution: Reinstall the new server with Windows 2003 Standard Edition.

Standard Edition (instead of Web Edition) allows Windows 2003 to use all four cores, and the 4GB of RAM. Windows 2003 and IIS6 don't penalize our CGI's. The execution time for a single CGI is now around 30% less than on the old server. Plus, the 4 cores allow us to handle the double of concurrent CGI's.

Thanks anyways!

OTHER TIPS

You are reading a lot of sequential data and your cpu and ram is idle it means the HDD is bottleneck so upgrade your hard drives RAID to SSD.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top