在AWS Lambda上的分段錯誤
Curtis Chau
Updated: 2026年6月29日
在Linux容器中使用AWS Lambda並多次同時調用render方法時,有時會導致以下異常。
異常:
錯誤:運行時退出時出現錯誤:信號:分段故障 Runtime.ExitError
Text
解決方案
解決方案是在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
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()多進程渲染和wstring_convert::from_bytes錯誤
如果ChromePdfRenderer。 這會產生分段錯誤或C++異常:
Process runtime-1 exited: signal: segmentation fault
Error while generating PDF from HTML: 'wstring_convert::from_bytes'
Text
這些錯誤是間歇性的,可能僅在第一次或第二次Lambda容器調用後出現。
解決方案
設定ChromePdfRenderer:
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)不要調用ChromePdfRenderer保持為靜態或欄位級實例。 持久化渲染器會將陳舊的記憶體狀態帶入後續的Lambda調用中並導致崩潰。
// Avoid: global renderer reuse
private readonly ChromePdfRenderer _renderer = new();
// Avoid: calling Initialize()
Installation.Initialize();net
技術作家
Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。
...
閱讀更多