I came across this line in the verbose log on replication QueueReader Agent job startup.
The Queue Reader Agent has encountered the error 'Another queuereader agent for the subscription or subscriptions is running, or the server is working on a previous request by the same agent.' when connecting to 'distribution' on 'Svr01\Inst01'. Ensure that the publication and subscription are defined properly and that both servers are running.
The first clue I had that something was wrong was the vague replication message:
The replication agent has not logged a progress message in 10 minutes. This might indicate an unresponsive agent or high system activity. Verify that records are being replicated to the destination and that connections to the Subscriber, Publisher, and Distributor are still active.
Replication IS working but Replication Monitor is showing red X's. This second error has shown up from time to time and sometimes goes away. For a while now I though this was a bug as it has been reported a few times on Connect.
Assuming the first quoted error is correct, how can I find the double QueueReader or previous request?
tasklist /FI "imagename eq qreader.exe"
SELECT job_id, name, enabled FROM msdb..sysjobs WHERE category_id = 19 ORDER BY date_created;
Returns 1 row on each distributor.
Svr01 = Publisher, Distributor, SQL 2005
Svr02 = Publisher, Distributor, SQL 2005, Subscribor (Svr01)
Svr03 = SQL 2005, Subscribor (Svr01, Svr02)
Both Svr01 and Svr02 are reporting these errors.
This is being recorded in the error logs every minute:
 Step 2 of job [Svr01\Inst01].11 failed but will be retried in 1 minute(s)
Name : Run Agent
Type : Replication Queue Reader
Run as : SQL Server Agent Service Account
Database : Distribution
Command : -Distributor [Svr01\Inst01] -DistributionDB [distribution] -DistributorSecurityMode 1 -Continuous
For better, quicker answers on T-SQL questions, read Jeff Moden's suggestions.
"Million-to-one chances crop up nine times out of ten." ― Terry Pratchett, Mort