My observations:
Each occurrence of bo greater than 1000 is followed immediately by another one. In each pair, the first occurrence of bo greater than 1000 also has a large number of processes being blocked (second column with the heading "b"). In all cases when there is a large number of processes being blocked there are zero processes that are in the run queue (first column with the heading "r").
There is one occurrence where there are twenty processes in the run queue. That's a lot.
In all cases the i/o wait is zero (right most column with the heading "wa").
No swapping is occurring.
The CPU is idle a lot of the time.
Having more than one or two processes being blocked is very unusual. Having more than one or two processes in the run queue is also very unusual.
So I am wondering if your web application spawns many child processes. If your web application spawned a lot of child processes that were all contending for access to a single resource then that might explain why you have so many processes being blocked.
That might be enough information for you to figure out the cause of the problem. It sounds like you either have to reduce the number of processes accessing the disk or file simultaneously or spread out the i/o over more disks. The fact that the i/o wait is zero makes me think that more disks won't help. Maybe the resource is a log file or a data file that many processes are trying to read or write simultaneously. Often when many processes have to read or write a single file there is a controller process that manages that access. You may have to redesign your application to include using a database server in order to accomplish this shared access to a single file.
If I were you I would install the sar utility and run the sar data collector (sadc) every ten minutes. It will make binary data files of resource usage which you can then read. There is a wonderful application called KSar that makes graphs of sar data files. You would be able to see what resources are depleted when the bo is greater than 1000 and there are more than 2 processes being blocked.
The sar utility comes in the systats (sysstats?) package. KSar can be found at
http://sourceforge.net/search/?type_...oft&words=ksar
More information about sadc is available as a man page once you have installed the systats (sysstats?) package. You run the sadc utility via cron.