Vận hành production
Tổng quan nhanh
Phần tiêu đề “Tổng quan nhanh”Trang này là danh sách kiểm tra để đưa NextPDF lên production và duy trì nó ở đó. Nó chắt lọc từ bộ tài liệu: mỗi mục liên kết tới trang chứa phần chuyên sâu, nên bạn xác minh ở đây và đọc ở đó. Hãy thực hiện Danh sách kiểm tra trước khi triển khai trước lần phát hành đầu tiên. Hãy xem lại Nhịp độ nâng cấp và Các điểm bắt đầu phân loại sự cố như một phần của vận hành thường nhật.
Danh sách kiểm tra trước khi triển khai
Phần tiêu đề “Danh sách kiểm tra trước khi triển khai”- Xác nhận môi trường chạy: NextPDF yêu cầu PHP
>=8.4 <9.0. Composer từ chối bất cứ thứ gì nằm ngoài khoảng đó. Xem Cài đặt. - Xác minh sáu tiện ích mở rộng bắt buộc bằng
php -m:ext-mbstring,ext-zlib,ext-intl,ext-gd,ext-curlvàext-openssl. Trang cài đặt giải thích vai trò của từng tiện ích. - Chạy
vendor/bin/nextpdf doctorđể kiểm tra môi trường một lần (phiên bản PHP, các tiện ích mở rộng và tình trạng sẵn có của font trong một báo cáo). - Quyết định lộ trình kết xuất trước khi định cỡ phần cứng. Pipeline
trong tiến trình (
writeHtml()) không cần dịch vụ bổ sung nào. Artisan, Gotenberg và Cloudflare mỗi lựa chọn đều thêm một trình duyệt hoặc dịch vụ mạng cần vận hành. Hãy dùng Chọn lộ trình của bạn để quyết định. - Nếu bạn chọn một cầu nối bộ kết xuất, hãy đọc trang bảo mật và vận hành của nó trước khi go-live. Xem Gia cố bề mặt bộ kết xuất.
- Đóng gói các font bạn kết xuất tại thời điểm build, và chỉ những font đó. Xem Cung cấp font trong production.
Định cỡ tài nguyên
Phần tiêu đề “Định cỡ tài nguyên”Định cỡ cho tài liệu lớn nhất bạn tạo ra, không phải cho tài liệu trung bình.
getPdfData() dựng toàn bộ tài liệu Portable Document Format (PDF) trong bộ
nhớ và trả về nó dưới dạng một chuỗi.
- Đặt bộ nhớ cho worker hoặc function theo hướng dẫn định cỡ serverless: một tài liệu vài trang thoải mái ở mức 512–1024 MB; tài liệu nhiều hình ảnh hoặc nhiều trang cần nhiều hơn.
- Đặt timeout cao hơn thời gian build trong trường hợp xấu nhất, có dư biên. Chuyển các job quá khổ sang một hàng đợi bất đồng bộ ghi vào object storage — cùng phần định cỡ đó trình bày mẫu này.
- Cấp opcache cho các worker tồn tại lâu và tắt timestamp validation. Công
thức Docker có phần opcache
chứa các giá trị
inicho production. - Khi bộ nhớ hoặc thông lượng trôi lệch sau khi ra mắt, hãy bắt đầu từ bảng quyết định từ triệu chứng đến đòn bẩy.
Quy tắc an toàn worker
Phần tiêu đề “Quy tắc an toàn worker”Một Document chỉ dùng một lần. Dựng nó, ghi nó một lần, rồi để nó rời khỏi
phạm vi; tạo một thực thể mới cho mỗi request hoặc mỗi queue job. Chỉ chia sẻ
các registry tồn tại theo vòng đời tiến trình — FontRegistry và
ImageRegistry — bằng cách tạo chúng một lần khi worker khởi động. Điều này
khớp với mô hình xử lý theo từng request và từng job của PHP-FPM, queue worker và các
application server chạy lâu dài.
- Công thức với chuỗi khởi động và reset mỗi chu kỳ: Kết xuất theo lô an toàn cho worker.
- Cam kết được gói gọn trong một câu trả lời: Nó có an toàn cho worker và an toàn cho luồng không?
Gia cố bề mặt bộ kết xuất
Phần tiêu đề “Gia cố bề mặt bộ kết xuất”Hãy coi HTML là không đáng tin, đặc biệt là bất cứ thứ gì chịu ảnh hưởng từ người dùng. Chọn lộ trình của bạn nêu rõ ranh giới: theo mặc định, pipeline tích hợp sẵn không chạy script nào và không tải tài nguyên từ xa nào, trong khi mỗi cầu nối kết xuất thông qua một trình duyệt hoặc một dịch vụ mạng. Trước khi đưa một cầu nối ra phục vụ lưu lượng production, hãy làm theo trang bảo mật và vận hành của nó:
- Bảo mật và vận hành Artisan — bề mặt bộ kết xuất Chrome.
- Bảo mật và vận hành Gotenberg — bề mặt dịch vụ Gotenberg.
- Bảo mật và vận hành Cloudflare — bề mặt triển khai biên.
- Chạy engine như một dịch vụ? Hãy thêm Bảo mật và vận hành Connect.
Khả năng quan sát
Phần tiêu đề “Khả năng quan sát”NextPDF không công bố mục tiêu service-level objective (SLO) nào; hãy suy ra mục tiêu của bạn từ các chỉ số thời lượng kết xuất và bộ nhớ mà bạn đo bên dưới.
Hãy trang bị đo lường cho lộ trình kết xuất trước sự cố đầu tiên, không phải sau đó.
- Engine trong tiến trình: Quan sát bằng OpenTelemetry.
- Triển khai NextPDF Connect: Công thức OpenTelemetry cho Connect.
- Mỗi lần kết xuất, hãy ghi lại: thời gian trôi qua, bộ nhớ đỉnh, số trang, kích thước đầu ra, và kết quả cùng danh mục ngoại lệ của nó từ tài liệu tham khảo lỗi.
- Cảnh báo theo xu hướng, không chỉ theo lỗi: thời gian build tăng dần, bộ nhớ đỉnh tăng dần, và số lần timeout hoặc cạn kiệt bộ nhớ là các tín hiệu cảnh báo sớm trong các mục về bộ nhớ và hiệu năng.
Nhịp độ nâng cấp
Phần tiêu đề “Nhịp độ nâng cấp”- Đọc chính sách hỗ trợ phiên bản
một lần, rồi giữ các bản phát hành tuân theo nó. Nó định nghĩa cam kết
semantic-versioning, các nhãn ổn định, vòng đời ngừng hỗ trợ (deprecation) và bộ
từ vựng vòng đời (
active,lts,maintenance,frozen,eol) mà bộ tài liệu này dùng. - Commit
composer.lockđể mỗi worker được triển khai đều phân giải ra cùng phiên bản engine — trang cài đặt nêu kỷ luật này. - Xem lại nhật ký thay đổi trước mỗi lần nâng phiên bản.
Các điểm bắt đầu phân loại sự cố
Phần tiêu đề “Các điểm bắt đầu phân loại sự cố”Đối với một sự cố cầu nối bộ kết xuất (một cú crash Chrome, một sự cố ngừng hoạt động Gotenberg, một lỗi kết xuất biên), hãy bắt đầu từ phần các chế độ lỗi của cầu nối đó trong Gia cố bề mặt bộ kết xuất.
- Bắt đầu từ triệu chứng, không phải từ tên lớp, trong cơ sở kiến thức khắc phục sự cố.
- Ánh xạ một ngoại lệ đã bắt được tới danh mục và cam kết ngữ cảnh của nó trong tài liệu tham khảo lỗi.
Xem thêm
Phần tiêu đề “Xem thêm”- Vận hành NextPDF trong production — bài luận Insider_ về lý do engine hành xử theo cách này dưới tải.
- Đóng gói ứng dụng NextPDF vào container — image Docker cho production, từ đầu đến cuối.
- Triển khai trên serverless — chi tiết cụ thể cho Lambda, Cloud Run và App Runner.
- Kết xuất an toàn cho worker trên Connect — cùng các quy tắc vòng đời được áp dụng cho server.