Segmentierungsfehler bei AWS Lambda

This article was translated from English: Does it need improvement?
Translated
View the article in English

Bei der Nutzung von AWS Lambda in einem Linux-Container und dem mehrmaligen gleichzeitigen Aufrufen der Render-Methode tritt manchmal die folgende Ausnahme auf.

Ausnahme:
Fehler: Laufzeit beendete mit Fehler: Signal: Segmentierungsfehler Laufzeit.Beendigungsfehler

Lösungen

Die Lösung besteht darin, die GC.Collect Methode aufzurufen, nachdem das PDF-Dokument gerendert wurde. Dieses Problem wurde auf Amazon Linux 2023 mit aktuellen IronPDF-Versionen berichtet; frühere Bereitstellungen mit .NET 6 und Amazon Linux 2 sind nicht betroffen.

// Create an instance of ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Render the HTML string to a PDF document
PdfDocument document = renderer.RenderHtmlAsPdf(htmlString);

// Explicitly trigger garbage collection to help manage memory usage
GC.Collect();
// Create an instance of ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Render the HTML string to a PDF document
PdfDocument document = renderer.RenderHtmlAsPdf(htmlString);

// Explicitly trigger garbage collection to help manage memory usage
GC.Collect();
' Create an instance of ChromePdfRenderer
Dim renderer As New ChromePdfRenderer()

' Render the HTML string to a PDF document
Dim document As PdfDocument = renderer.RenderHtmlAsPdf(htmlString)

' Explicitly trigger garbage collection to help manage memory usage
GC.Collect()
$vbLabelText   $csharpLabel

Mehrprozess-Rendering und wstring_convert::from_bytes Fehler

Falls GC.Collect() das Problem nicht löst, könnte die Ursache das Multi-Prozess-Rendering oder die globale ChromePdfRenderer Wiederverwendung innerhalb des Lambda-Containers sein. Dies erzeugt entweder einen Segmentierungsfehler oder eine C++-Ausnahme:

Process runtime-1 exited: signal: segmentation fault
Error while generating PDF from HTML: 'wstring_convert::from_bytes'

Diese Fehler treten sporadisch auf und können erst nach dem ersten oder zweiten Lambda-Container-Aufruf auftreten.

Lösung

Setzen Sie Installation.SingleProcess = true, leiten Sie Pfade zu /tmp um und erstellen Sie ein neues ChromePdfRenderer pro Aufruf:

IronPdf.Installation.SingleProcess = true;
IronPdf.Installation.TempFolderPath = "/tmp";

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync(htmlString);
IronPdf.Installation.SingleProcess = true;
IronPdf.Installation.TempFolderPath = "/tmp";

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync(htmlString);
Imports IronPdf

IronPdf.Installation.SingleProcess = True
IronPdf.Installation.TempFolderPath = "/tmp"

Dim renderer As New ChromePdfRenderer()
Dim pdf = Await renderer.RenderHtmlAsPdfAsync(htmlString)
$vbLabelText   $csharpLabel

Rufen Sie Installation.Initialize() nicht auf und halten Sie kein ChromePdfRenderer als statische oder Feldebenen-Instanz. Ein persistenter Renderer nimmt alten Speicherzustand in nachfolgende Lambda-Aufrufe mit und verursacht den Absturz.

// Avoid: global renderer reuse
private readonly ChromePdfRenderer _renderer = new();

// Avoid: calling Initialize()
Installation.Initialize();
// Avoid: global renderer reuse
private readonly ChromePdfRenderer _renderer = new();

// Avoid: calling Initialize()
Installation.Initialize();
$vbLabelText   $csharpLabel
Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 20,296,129 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronPdf
Führen Sie eine Probe aus Sehen Sie zu, wie Ihr HTML-Code in eine PDF-Datei umgewandelt wird.