As part of the work I'm doing for a client, I benchmarked the performance of OpenACS 4 and some code that I have developed for this client. I used aD's Traffic Jamme to do the tests. I also ran ApacheBench, but the results are similar.
The webserver and DB server (PostgreSQL) sit on separate machines. The DB server is a Gateway dual PIII 933 server with 1GB of memory and running RAID 10. The webserver is a dual PIII 500Mhz box with 1GB of memory. Both boxes run FreeBSD.
I tested several different pages in the system which had database queries. The queries ranged from a simple permissions check to a query on a tree. Traffic Jamme reported 4 connections/sec for the most complex page (the tree query with some TCL processing) and 17 connections/sec for a simple page with a single query into the acs_permissions table. I ran Traffic Jamme with 50 threads/20 iterations.
I ran top on the DB server and the webserver and found out that the DB server is only using 10% of the CPUs and the webserver is only using 50% of the CPUs. I tried playing around with the MaxThreads=MinThreads=X number to see if I could increase the CPU usage. I tried turning off logging completely. Nothing seemed to increase the maximum number of connections/sec.
Is there something else I can try to do to use more of the CPU time on either server? Is there a bottleneck that I am overlooking? Thanks!