It's not a PHP problem or even an Apache problem, it's a MySQL problem. You have three systems interacting to serve the pages being requested, Apache to receive and serve the pages, the PHP interpreter to handle the PHP code generating the page to be served, and the MySQL database to respond to PHP's queries for the data required to generate the page. With that heavy a load, especially the MySQL engine needs to be tuned, and various caching features need to be optimized - not just the MODx cache, but other server-side caching options, especially query optimization and caching.
http://dev.mysql.com/doc/refman/5.0/en/query-cache.html
When you save a resource, the MODx cache is cleared for all pages, and that means that menus and getResources calls all have to be run again, fetching the updated structures from the database. Revo is pretty flexible, but I'm just getting started working with it and I'm not sure if it's possible to just clear certain caches; for example if a new blog post only requires the getResources call creating the blog list to be re-run but not menus and getResources calls for other areas of the site? Could the blog be run in its own context, so updates to it would only refresh the caches for its context?
While storing the SESSION in the database rather than in files has advantages, with such a busy site and heavy load on the MySQL engine, you might want to consider storing the SESSION in files, since ever single page load must fetch the SESSION fresh from the database or the files for every page request for every user.
http://www.binarysludge.com/2011/01/13/redundant-and-fault-tolerant-php-session-storage/
http://php.net/manual/en/function.session-set-save-handler.php
[ed. note: sottwell last edited this post 14 years, 10 months ago.]