Hey All,
I upgraded from Laravel 8 to Laravel 9 over the weekend, and since then my load-balanced queue (horizon) servers have intermittently become unresponsive, and logs show a bunch of cURL errors. The two main errors I'm seeing are:
cURL error 35: OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to xxxx.myshopify.com:443 (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://xxxx.myshopify.com/admin/api/2022-07/graphql.json {"exception":"[object] (GuzzleHttp\\Exception\\ConnectException(code: 0): cURL error 35: OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to xxxx.myshopify.com:443 (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://xxxx.myshopify.com/admin/api/2022-07/graphql.json at /home/forge/mysite/releases/20230523030942/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:210)
cURL error 6: Could not resolve host: xxxx.myshopify.com (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://xxxx.myshopify.com/admin/api/2022-07/graphql.json {"exception":"[object] (GuzzleHttp\\Exception\\ConnectException(code: 0): cURL error 6: Could not resolve host: xxxx.myshopify.com (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://xxxx.myshopify.com/admin/api/2022-07/graphql.json at /home/forge/mysite/releases/20230523030942/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:210)
Other than the code and framework update, there have been no changes to my servers (5 of them, all Ubuntu 20, php 8.1) of any kind. I initially suspected that maybe an older cURL or OpenSSL version was the culprit, so I upgraded those, but still had the problem. I then spun up a new server via Forge with the latest everything (Ubuntu 22, php 8.2) and still got the error, though it was slightly different, presumably due to a different OpenSSL version (v3) on the new server. The error is:
cURL error 35: error:0A000410:SSL routines::sslv3 alert handshake failure (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://xxxx.myshopify.com/admin/api/2022-07/graphql.json {"exception":"[object] (GuzzleHttp\\Exception\\ConnectException(code: 0): cURL error 35: error:0A000410:SSL routines::sslv3 alert handshake failure (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://xxxx.myshopify.com/admin/api/2022-07/graphql.json at /home/forge/mysite/releases/20230523175258/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:210)
As another point of reference, though its hard to verify, it does seem like this happens when a large volume of jobs are being processed.
Do you think this has something to do with server config, even though even the new server is having the same issue? Or is this a Laravel or Guzzle/CurlFactory thing? I suppose the issue could also be with DNS?? I'm totally at a loss here, so any thoughts or assistance is greatly appreciated! Cheers!