在AWS Lambda上的分段錯誤
This article was translated from English: Does it need improvement?
Translated
View the article in English
在Linux容器中使用AWS Lambda並多次同時調用render方法時,有時會導致以下異常。
異常:
錯誤:運行時退出時出現錯誤:信號:分段故障 Runtime.ExitError
解決方案
解決方案是在PDF文件渲染後調用GC.Collect方法。 已在Amazon Linux 2023上通報此問題,並使用最近的IronPDF版本; 使用.NET 6和Amazon Linux 2的先前部署不受影響。
// 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
多進程渲染和wstring_convert::from_bytes錯誤
如果ChromePdfRenderer。 這會產生分段錯誤或C++異常:
Process runtime-1 exited: signal: segmentation fault
Error while generating PDF from HTML: 'wstring_convert::from_bytes'
這些錯誤是間歇性的,可能僅在第一次或第二次Lambda容器調用後出現。
解決方案
設定ChromePdfRenderer:
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
不要調用ChromePdfRenderer保持為靜態或欄位級實例。 持久化渲染器會將陳舊的記憶體狀態帶入後續的Lambda調用中並導致崩潰。
// 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
準備開始了嗎?
Nuget 下載 20,296,129 | 版本: 2026.7 剛剛發布

