Run this query when the problem recurs:
select * from sys.dm_os_waiting_tasks t inner join sys.dm_exec_connections c on c.session_id = t.blocking_session_id cross apply sys.dm_exec_sql_text(c.most_recent_sql_handle) as h1
This will give you the decline of the session that caused the lock on which the resource was locked, and the text of the rcent request itself for that session. This should give you a solid starting point.
source share