Thanks all for the replies!
Unfortunately I don't have much info which I could share. The database itself doesn't have any tracing or monitoring turned on plus this issue happens on & off, so usually when I receive the complains the whole problem already grew soo big that it causes the database to be super duper slow. The easiest & fastest way to recover from this is rebooting the whole sql services since we don't have any tracing, once the DB recovered all the historical data is lost.
The only info I have is from the developer's observation as they're managing the application which connects to the database. The insert itself is a batch insert & what the developer suspect is when 1 of the insert running slow, users keep retrying to insert again thus causes massive queues to the DB. However any select DML task doesn't have any impact during that period.