Force Batch Merge All Duplicates
I ran into a similar problem today.  My solution requires some tech chops, but was very effective:


Install cv on the server if you haven't already.
Create a text file named forcemerge.php on the server anywhere in your webroot with the following contents:


&lt;?php
eval(`cv php:boot`);
// Set the dedupe rule
$rgid = 13; 
$return = CRM_Dedupe_Merger::batchMerge($rgid, NULL, 'aggressive', 1, 2, array(), FALSE);



Change the 13 above to the dedupe rule ID you want to use for deduping.  You can also change the NULL to a group ID if you only want to dedupe a particular group.
Set that file as executable and run it!


You should be able to see your progress a number of ways, by periodically doing one of the following:


select count(*) from civicrm_contact WHERE is_deleted = 0; in a SQL client;
Finding duplicates through the CiviCRM UI and then pressing "Refresh Duplicates" to see the number decrease.