Browsershot Navigation Timeout on Prod
Hey guys, currently im having a weird issue with the navigation timeout for which I didnt find any fix yet anywhere else. So I hope I find some help maybe here. For the prod machine itself im using Ubuntu 20.04.1 LTS together with PHP 8.3 and Apache2. The problem appears for Laravel 11.30, spatie/browsershot 4.3.0, npm 9.2.0, composer 2.8.2.
The code itself works fine for like maybe a week and then suddenly without any other error (apache2 or PHP related) just dies for no reason. If I had to guess I would say it might be a PHP related error, since I really cant think for any other reason why the code itself should work for around a week and then suddenly die. The only way to workaround this problem is a full reboot of the VM, but that also doesnt work everytime. The code for the pdf generation itself is in a dispatchable job. So when a user submits the form certain jobs are getting dispatched in the background.
I also did already check if there is a possibility to declare the default navigation timeout, but I couldnt find anything other then the timeout method itself, which sadly doesnt help for this problem.
Code in Controller:
Browsershot::html(view('pdf.' . $viewName, ['data' => $data])->render())
->noSandbox()
->userAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36')
->ignoreHttpsErrors()
->emulateMedia('print')
->waitUntilNetworkIdle()
->setOption('args', ['--disable-web-security'])
->waitForSelector('.flex')
->format('A4')
->save($filePath . '/' . $viewName . '.pdf');
Error:
Symfony\Component\Process\Exception\ProcessFailedException: The command "PATH=$PATH:/usr/local/bin:/opt/homebrew/bin NODE_PATH=`npm root -g` node '/var/www/[CoolProject]/releases/20241204_110745/vendor/spatie/browsershot/src/../bin/browser.cjs' '{"url":"file:\/\/\/tmp\/470650806-0375512001734703353\/index.html","action":"pdf","options":{"path":"\/var\/www\/[CoolProject]\/releases\/20241204_110745\/storage\/app\/[CoolUUID]_ready\/files\/tah.pdf","args":["--no-sandbox","--disable-web-security"],"viewport":{"width":800,"height":600},"displayHeaderFooter":false,"userAgent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/131.0.0.0 Safari\/537.36","ignoreHttpsErrors":true,"emulateMedia":"print","waitUntil":"networkidle0","waitForSelector":".flex","format":"A4"}}'" failed.
Exit Code: 1(General error)
Working directory: /
Output:
================
Error Output:
================
TimeoutError: Navigation timeout of 30000 ms exceeded
at new Deferred (/var/www/[CoolProject]/releases/20241204_110745/node_modules/puppeteer-core/lib/cjs/puppeteer/util/Deferred.js:60:34)
at Deferred.create (/var/www/[CoolProject]/releases/20241204_110745/node_modules/puppeteer-core/lib/cjs/puppeteer/util/Deferred.js:21:16)
at new LifecycleWatcher (/var/www/[CoolProject]/releases/20241204_110745/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/LifecycleWatcher.js:69:60)
at Deferred.create (/var/www/[CoolProject]/releases/20241204_110745/node_modules/puppeteer-core/lib/cjs/puppeteer/util/Deferred.js:21:16)
at new LifecycleWatcher (/var/www/[CoolProject]/releases/20241204_110745/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/LifecycleWatcher.js:69:60)
at CdpFrame.goto (/var/www/[CoolProject]/releases/20241204_110745/node_modules/puppeteer-core/lib/cjs/puppeteer/cdp/Frame.js:149:29)
at CdpFrame.<anonymous> (/var/www/[CoolProject]/releases/20241204_110745/node_modules/puppeteer-core/lib/cjs/puppeteer/util/decorators.js:109:27)
at CdpPage.goto (/var/www/[CoolProject]/releases/20241204_110745/node_modules/puppeteer-core/lib/cjs/puppeteer/api/Page.js:574:43)
at callChrome (/var/www/[CoolProject]/releases/20241204_110745/vendor/spatie/browsershot/bin/browser.cjs:282:37)
in /var/www/[CoolProject]/releases/20241204_110745/vendor/spatie/browsershot/src/Browsershot.php:1078
Stack trace:
#0 /var/www/[CoolProject]/releases/20241204_110745/vendor/spatie/browsershot/src/Browsershot.php(684): Spatie\Browsershot\Browsershot->callBrowser()
#1 /var/www/[CoolProject]/releases/20241204_110745/vendor/spatie/browsershot/src/Browsershot.php(602): Spatie\Browsershot\Browsershot->savePdf()
#2 /var/www/[CoolProject]/releases/20241204_110745/app/Jobs/GeneratePDFJob.php(170): Spatie\Browsershot\Browsershot->save()
#3 /var/www/[CoolProject]/releases/20241204_110745/app/Jobs/GeneratePDFJob.php(85): App\Jobs\GeneratePDFJob->SavePDF()
#4 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): App\Jobs\GeneratePDFJob->handle()
#5 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#6 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\Container\Util::unwrapIfClosure()
#7 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()
#8 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Container/Container.php(690): Illuminate\Container\BoundMethod::call()
#9 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(128): Illuminate\Container\Container->call()
#10 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}()
#11 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#12 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(132): Illuminate\Pipeline\Pipeline->then()
#13 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(124): Illuminate\Bus\Dispatcher->dispatchNow()
#14 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\Queue\CallQueuedHandler->Illuminate\Queue\{closure}()
#15 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#16 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(123): Illuminate\Pipeline\Pipeline->then()
#17 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(71): Illuminate\Queue\CallQueuedHandler->dispatchThroughMiddleware()
#18 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\Queue\CallQueuedHandler->call()
#19 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(440): Illuminate\Queue\Jobs\Job->fire()
#20 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(390): Illuminate\Queue\Worker->process()
#21 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(177): Illuminate\Queue\Worker->runJob()
#22 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(148): Illuminate\Queue\Worker->daemon()
#23 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(131): Illuminate\Queue\Console\WorkCommand->runWorker()
#24 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\Queue\Console\WorkCommand->handle()
#25 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#26 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\Container\Util::unwrapIfClosure()
#27 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()
#28 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Container/Container.php(690): Illuminate\Container\BoundMethod::call()
#29 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Console/Command.php(213): Illuminate\Container\Container->call()
#30 /var/www/[CoolProject]/releases/20241204_110745/vendor/symfony/console/Command/Command.php(279): Illuminate\Console\Command->execute()
#31 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Console/Command.php(182): Symfony\Component\Console\Command\Command->run()
#32 /var/www/[CoolProject]/releases/20241204_110745/vendor/symfony/console/Application.php(1047): Illuminate\Console\Command->run()
#33 /var/www/[CoolProject]/releases/20241204_110745/vendor/symfony/console/Application.php(316): Symfony\Component\Console\Application->doRunCommand()
#34 /var/www/[CoolProject]/releases/20241204_110745/vendor/symfony/console/Application.php(167): Symfony\Component\Console\Application->doRun()
#35 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(197): Symfony\Component\Console\Application->run()
#36 /var/www/[CoolProject]/releases/20241204_110745/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1203): Illuminate\Foundation\Console\Kernel->handle()
#37 /var/www/[CoolProject]/releases/20241204_110745/artisan(13): Illuminate\Foundation\Application->handleCommand()
#38 {main}
Any guesses or tips are hardly appreciated. This problem is getting on my nerves for quite a while now.
Please or to participate in this conversation.