Jimmy Wales wrote:
- I propose that we test the site without the "this page has been
accessed N times" feature.
This is my best guess too. However, it is possible to get from guesses to knowledge by checking getmicrotime() before and after the call and log the elapsed time (to stderr?). Wrap each database transaction in this, and get some statistics on which calls are worst, rather than removing calls by guessing.
Not knowing more about this specific system, my general experience is that database locks can eat a lot of wallclock time without consuming any CPU time. During the delay, the memory allocated by each execution thread can eat so much memory that a machine starts to swap. I have no idea if this happens in Wikipedia, but you can monitor disk I/O by simple programs like vmstat (or iostat on some systems). If this is the case, adding RAM to avoid swapping is *not* a solution.