@MalagaFirewall8
I tested the same scenario again after increasing the test system to 4 vCPU.
The issue still occurs, so this does not look like a simple “not enough CPU” problem.
Test system during this run
pfSense Plus: 26.03.1
FreeBSD: 16.0-CURRENT
OpenVPN: 2.6.20
CPU: 4 vCPU
For this run I restored the original helper stack and added temporary timestamp wrappers around:
/usr/local/sbin/ovpn_auth_verify
/usr/local/sbin/openvpn.attributes.sh
The wrappers logged helper start/end timestamps and return codes, then called the original scripts. I also sampled OpenVPN counters, CPU, load, and helper/PHP process counts during the reconnect storm.
Result
The problem still appears with 4 vCPU:
total=469 with_vip=417 no_vip=52 undef=51
total=536 with_vip=420 no_vip=116 undef=98
CPU did spike during the storm, for example:
cpu us=62 sy=29 id=8
But it was not permanently pinned at 0% idle. The behavior is wave-like: connections build up, UNDEF / no_vip increases, then the status sometimes drops back down before the next reconnect wave.
During the storm we saw the expected helper/runtime processes:
fcgicli
php-cgi -f /usr/local/sbin/openvpn_connect_async.php
/bin/sh /usr/local/sbin/openvpn.connect_async.sh
/bin/sh /usr/local/sbin/ovpn_auth_verify
php-fpm
openvpn
The timestamp wrappers showed many helper calls completing with rc=0, so it is not simply that every helper process hangs forever. However, under reconnect storm conditions the helper/runtime path still falls behind badly enough that clients remain in UNDEF / no virtual IP and later hit TLS/handshake timeouts.
Earlier tests also showed:
both helpers enabled → bad reconnect behavior / high UNDEF
both helpers disabled/no-op → reconnect behavior much better
only tls-verify disabled → still bad
only client-connect/client-disconnect disabled → still bad
replacing openvpn.connect_async.sh with an older version → did not solve it
So my current conclusion is:
This is probably not just UDP buffers and not just CPU capacity. It looks more like a regression or bottleneck in the pfSense/OpenVPN helper runtime path on the newer stack — likely around fcgicli, PHP helper execution, openvpn_connect_async.php, openvpn.tls-verify.php, or OpenVPN deferred client-connect handling under mass reconnect load.
Disabling the helpers is not a safe production workaround, but it remains the clearest diagnostic: removing the helper path from the hot path makes reconnect recovery much better.