• Always there is a reason for blocking. The blocking happens for the time when the process is active and runnable. You need to point out why the process is runnable for long time. There might be poor query/joins, you need to verify the query and optimize it if possible. Add nolock to queries, if possible.

    If blocking is because of hardware, there might be CPU bottlenecks, you need to check CPU usage for that. There might be memory bottlenecks, for that you need to confirm if the memory allocated to SQL Server is enough. There might hardware issues, like latency in writing and reading, than you need better IO devices or controllers.

    There could be some jobs running in parallel to the queries which are consuming resources, you may check that too.

    It is not easy to identify bottleneck easily, but is possible enhance the performance to avoid blocking.

    Swarndeep

    http://talksql.blogspot.com