GitHub Actions self-hosted runner on Azure Windows VM intermittently stops picking up queued jobs until service restart

2026-09-07T10:43:06.2266667+00:00

Hi,

We are running a GitHub Actions self-hosted runner on an Azure Windows VM for Playwright automation testing.

The GitHub Actions runner is installed as a Windows service so that it remains available in the background.

Environment

Azure Virtual Machine

Windows OS

GitHub Actions self-hosted runner

Runner installed as a Windows service

Runner labels: self-hosted, windows, x64

Main workload: Playwright browser automation tests

Problem

Intermittently, GitHub Actions jobs targeting this runner remain in the Queued state for an unusually long time.

We have observed jobs queued for:

approximately 30 minutes

several hours

up to approximately 5 hours in one case

The issue does not occur consistently.

Initially, we suspected that this might happen when someone was actively using the Azure VM.

We tested this by connecting to and using the VM while triggering the automation workflow. The runner was still able to pick up and execute the job successfully.

We also compared the automation execution time while the VM was actively being used versus when nobody was using it. There was no significant difference in execution time.

Therefore, normal interactive usage of the VM does not appear to explain the issue.

Service restart behavior

During one occurrence where a GitHub Actions job remained queued, we restarted the GitHub Actions runner Windows service.

Immediately after the service was restarted, the queued workflow was picked up and started normally.

Since restarting the service, the issue has not occurred again so far.

Current suspicion

We suspect that either:

the GitHub Actions runner service/listener occasionally becomes stuck,

the runner loses or has an unhealthy outbound connection to GitHub Actions,

or there is some Windows/Azure VM networking or service-level condition affecting the runner communication.

From GitHub documentation, the self-hosted runner initiates outbound HTTPS communication with GitHub Actions and needs that connection to receive job assignments.

Questions

From the Azure VM/Windows side:

Are there any known Azure VM networking conditions that could cause a long-running background service to temporarily lose or stall an outbound HTTPS connection while the VM itself continues operating normally?

Could Azure networking, NAT, firewall, DNS, TCP connection timeout, or VM network adapter behavior affect a long-running GitHub Actions runner connection?

Are there Azure-side logs or metrics you would recommend checking when the issue occurs?

Would Network Watcher, NSG flow logs, VM metrics, or Windows Event Viewer be useful for identifying this?

Are there recommended settings for running a GitHub Actions self-hosted runner reliably as a Windows service on an Azure VM?

The problem is currently not reproducible. If it happens again, we plan to collect the GitHub runner diagnostic logs before restarting the service.

We would also like to know which Azure VM/network diagnostics should be collected at the same time so we can determine whether this is a GitHub runner issue or an Azure/Windows connectivity issue.

Azure Virtual Machines
Azure Virtual Machines

An Azure service that is used to provision Windows and Linux virtual machines.


1 answer

Sort by: Newest
  1. Salamat Shah 740 Reputation points MVP
    2026-09-08T13:20:57.69+00:00

    Based on the fact that restarting the runner service immediately cleared the queue, the issue is most likely related to the GitHub runner listener process or its connection to GitHub Actions, rather than Azure VM performance. Focus troubleshooting on runner logs and outbound connectivity monitoring when the issue occurs again.

    Recommended Steps:

    Ensure the GitHub self-hosted runner is updated to the latest version.

    Configure Windows Service Recovery to automatically restart the runner service if it becomes unresponsive.

    Monitor outbound HTTPS (TCP 443) connectivity to GitHub endpoints.

    If the issue reoccurs, collect:

    GitHub Runner diagnostic logs (_diag)

    Windows Event Viewer logs

    Azure Network Watcher diagnostics

    NSG Flow Logs (if enabled)

    VM CPU, Memory, and Network performance metrics.

    Was this answer helpful?

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.