The worker MPM currently creates and destroys a ptrans pool for each connection. This is somewhat of a performance bottleneck due to the mutex locking in apr_pool_destroy().
We could avoid this problem by creating a persistent pool per worker thread and doing apr_pool_clear() instead of apr_pool_destroy. But I'm guessing that there's a reason why the code doesn't do that already. Can anyone comment on the rationale for the current design? If we created a persistent pool in each worker thread, we might also be able to eliminate the locking in new_block() by enhancing the pool code to use a thread-private free block list. This would eliminate essentially all the mutex operations during request processing. --Brian