AWS Lambda 上的分段故障
This article was translated from English: Does it need improvement?
Translated
View the article in English
当在 Linux 容器中使用 AWS Lambda 并多次并发调用渲染方法时,有时会导致以下异常。
异常:
错误:运行时因错误退出:信号:分段错误 Runtime.ExitError
解决方案
解决方案是PDF文档渲染后调用GC.Collect方法。 该问题已在最近的IronPDF版本中于Amazon Linux 2023上报告; 早期使用.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 刚刚发布

