- Issue created by @rang501
The Linkchecker module appears to cause performance issues when there are a large number of links or using a paragraph module. Maybe a combination of both.
The first thing I noticed is that the content entity is being used to store data, which is bad in many ways, and I do not see any valid reasons to use that. A simple database table with a schema should be the best way to handle this.
The slowness appeared with nodes that have many links and paragraphs. Because linkchecker uses hook_entity_update, it is also called when paragraphs are saved, so maybe it goes into some kind of loop.
I tried to use profiles and saw that HTML5 parser methods get a lot of calls, one example over 200k calls.
Uninstalling the module resolved the issue; nodes were saved under a second before it hit the execution time limit (60 seconds).
It started happening with the D11 upgrade.
I have not debugged this too much, but I did attach the XHProf screenshot for one node save. The link count on that node was probably around 100.
1. A site with over 100k links to check.
2. Save a node with some nested paragraphs and many links.
Active
2.1
Code