AWS Lambda Üzerinde Segment Hatası

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

Linux konteynerde AWS Lambda kullanırken ve aynı render yöntemini eş zamanlı birçok kez çağırırken bazen aşağıdaki istisna ortaya çıkar.

İstisna:
Hata: Çalışma zamanı hatasıyla çıkıldı: sinyal: segmentasyon hatası Runtime.ExitError

Çözümler

Çözüm, PDF belgesi rendelendikten sonra GC.Collect yöntemini çağırmaktır. Bu sorun, Amazon Linux 2023 üzerinde, yeni IronPDF sürümleriyle bildirilmiştir; önceki konuşlandırmalar .NET 6 ve Amazon Linux 2 kullanıyorsa etkilenmez.

// 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

Çoklu İşlem İşleme ve wstring_convert::from_bytes Hataları

Eğer GC.Collect() sorunu çözmüyorsa, temel neden Lambda konteyneri içinde çok işlemli render işleme veya küresel ChromePdfRenderer yeniden kullanımı olabilir. Bu ya bir bellek bölütleme hatası ya da bir C++ istisnası üretir:

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

Bu hatalar aralıklıdır ve sadece birinci veya ikinci Lambda konteyner çağrısından sonra ortaya çıkabilir.

Çözüm

Installation.SingleProcess = true ayarlayın, yolları /tmp yönlendirin ve çağrı başına yeni bir ChromePdfRenderer oluşturun:

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

Installation.Initialize() çağırmayın ve ChromePdfRenderer bir statik veya alan düzeyinde örnek olarak tutmayın. Kalıcı bir işlemci, eski bellek durumunu sonraki Lambda çağrılarına taşır ve çöküşe neden olur.

// 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
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 19,936,792 | Sürüm: 2026.7 yeni yayınlandı
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronPdf
bir örnek çalıştır HTML'nizi bir PDF'ye dönüştüğünü izleyin.