ข้ามไปยังเนื้อหา
getnextpdf.com

การดำเนินงานในโปรดักชัน

หน้านี้คือเช็กลิสต์สำหรับการนำ NextPDF ขึ้นสู่โปรดักชันและดูแลให้อยู่ในสภาพพร้อมใช้งานต่อไป หน้านี้ทำหน้าที่คัดสรรเนื้อหาจากคู่มือ โดยแต่ละรายการเชื่อมโยงไปยังหน้าที่ให้รายละเอียดเชิงลึก เพื่อให้ตรวจสอบที่นี่แล้วไปอ่านรายละเอียดที่นั่น ดำเนินการตาม เช็กลิสต์ก่อนดีพลอย ให้ครบก่อนการรีลีสครั้งแรก และกลับมาทบทวน จังหวะการอัปเกรด กับ จุดเริ่มต้นการคัดแยกเหตุการณ์ เป็นส่วนหนึ่งของการดำเนินงานในช่วงหลังเริ่มใช้งาน

  • ยืนยันรันไทม์: NextPDF ต้องใช้ PHP >=8.4 <9.0 โดย Composer จะปฏิเสธทุกอย่างที่อยู่ นอกช่วงนี้ ดู การติดตั้ง
  • ตรวจสอบส่วนขยายที่จำเป็นทั้งหกตัวด้วย php -m ได้แก่ ext-mbstring, ext-zlib, ext-intl, ext-gd, ext-curl และ ext-openssl โดย หน้าการติดตั้ง อธิบายว่าแต่ละตัวทำอะไร
  • รัน vendor/bin/nextpdf doctor เพื่อตรวจสอบสภาพแวดล้อมแบบครบในครั้งเดียว (เวอร์ชัน PHP, ส่วนขยาย และความพร้อมใช้งานของฟอนต์ในรายงานฉบับเดียว)
  • เลือกเส้นทางการเรนเดอร์ก่อนกำหนดขนาดฮาร์ดแวร์ ไปป์ไลน์แบบในกระบวนการ (writeHtml()) ไม่ต้องใช้บริการเพิ่มเติม ส่วน Artisan, Gotenberg และ Cloudflare ต่างเพิ่มเบราว์เซอร์หรือบริการเครือข่ายที่ต้องดูแล ใช้ เลือกเส้นทางของคุณ เพื่อตัดสินใจ
  • หากเลือกใช้บริดจ์ตัวเรนเดอร์ ให้อ่านหน้าความปลอดภัยและการดำเนินงานของบริดจ์นั้น ก่อนเปิดใช้งานจริง ดู การเสริมความแข็งแกร่งของพื้นผิวตัวเรนเดอร์
  • รวมเฉพาะฟอนต์ที่จะเรนเดอร์เข้าไปในขั้นตอนบิลด์ และเฉพาะฟอนต์เหล่านั้นเท่านั้น ดู การจัดเตรียมฟอนต์ในโปรดักชัน

กำหนดขนาดให้รองรับเอกสารที่ใหญ่ที่สุดที่สร้างขึ้น ไม่ใช่ขนาดเฉลี่ย เนื่องจาก getPdfData() สร้างเอกสาร Portable Document Format (PDF) ทั้งฉบับในหน่วยความจำและส่งคืนเป็นสตริงเดียว

  • กำหนดหน่วยความจำของเวิร์กเกอร์หรือฟังก์ชันตาม แนวทางการกำหนดขนาดสำหรับ serverless: เอกสารไม่กี่หน้าทำงานได้สบายที่ 512–1024 MB ส่วนเอกสารที่มีรูปภาพจำนวนมากหรือมีหลายหน้า ต้องใช้มากกว่านั้น
  • ตั้งค่าไทม์เอาต์ให้สูงกว่าเวลาบิลด์ในกรณีเลวร้ายที่สุดพร้อมเผื่อระยะ ย้ายงานที่มีขนาดใหญ่ เกินไปไปยังคิวแบบอะซิงโครนัสที่เขียนลงออบเจกต์สตอเรจ — ส่วนการกำหนดขนาด เดียวกันแสดงรูปแบบนี้
  • ให้เวิร์กเกอร์ที่ทำงานยาวนานใช้ opcache โดยปิดการตรวจสอบ timestamp ส่วน opcache ของสูตร Docker มีค่า ini สำหรับโปรดักชัน
  • เมื่อหน่วยความจำหรือทรูพุตเบี่ยงเบนหลังเปิดใช้งาน ให้เริ่มจาก ตารางตัดสินใจจากอาการสู่ปัจจัยควบคุม

Document เป็นออบเจกต์ที่ใช้ได้ครั้งเดียว สร้างขึ้น เขียนออกหนึ่งครั้ง แล้วปล่อยให้พ้นขอบเขต โดยสร้างอินสแตนซ์ใหม่ต่อคำขอหรือต่องานในคิวแต่ละงาน แชร์เฉพาะรีจิสทรีที่มีอายุตลอดกระบวนการ — FontRegistry และ ImageRegistry — ด้วยการสร้างเพียงครั้งเดียวตอนเวิร์กเกอร์บูต แนวทางนี้ สอดคล้องกับโมเดลแบบต่อคำขอและต่องานของ PHP-FPM, เวิร์กเกอร์คิว และแอปพลิเคชันเซิร์ฟเวอร์ที่ ทำงานยาวนาน

การเสริมความแข็งแกร่งของพื้นผิวตัวเรนเดอร์

หัวข้อที่มีชื่อว่า “การเสริมความแข็งแกร่งของพื้นผิวตัวเรนเดอร์”

ให้ถือว่า HTML เป็นสิ่งที่ไม่น่าเชื่อถือ โดยเฉพาะสิ่งใดก็ตามที่ได้รับอิทธิพลจากผู้ใช้ เลือกเส้นทางของคุณ ระบุขอบเขตไว้ว่า โดยค่าเริ่มต้น ไปป์ไลน์ในตัวจะไม่รันสคริปต์และไม่ดึงทรัพยากรระยะไกล ในขณะที่บริดจ์แต่ละตัวเรนเดอร์ผ่านเบราว์เซอร์ หรือบริการเครือข่าย ก่อนเปิดบริดจ์ให้รับทราฟฟิกในโปรดักชัน ให้ทำตามหน้าความปลอดภัยและการ ดำเนินงานของบริดจ์นั้น:

NextPDF ไม่ได้เผยแพร่เป้าหมาย service-level objective (SLO) ใด ๆ ให้กำหนดเป้าหมายของคุณเอง จากเมตริกระยะเวลาการเรนเดอร์และหน่วยความจำที่วัดไว้ด้านล่าง

ติดตั้งเครื่องมือวัดในเส้นทางการเรนเดอร์ก่อนเกิดเหตุการณ์ครั้งแรก ไม่ใช่หลังจากนั้น

  • อ่าน นโยบายการสนับสนุนเวอร์ชัน สักครั้ง แล้วยึดถือรีลีสให้เป็นไปตามนั้น เอกสารนี้กำหนดข้อตกลงด้าน semantic-versioning ป้ายกำกับ ความเสถียร วงจรชีวิตการเลิกใช้ และคำศัพท์วงจรชีวิต (active, lts, maintenance, frozen, eol) ที่คู่มือนี้ใช้
  • คอมมิต composer.lock เพื่อให้เวิร์กเกอร์ทุกตัวที่ดีพลอยใช้เอนจินเวอร์ชันเดียวกัน — หน้าการติดตั้ง ระบุแนวปฏิบัตินี้ไว้
  • ตรวจทาน changelog ก่อนเพิ่มหมายเลขเวอร์ชันแต่ละครั้ง

สำหรับเหตุการณ์ที่เกี่ยวกับบริดจ์ตัวเรนเดอร์ (Chrome ล่ม, Gotenberg ขัดข้อง, การเรนเดอร์ที่ edge ล้มเหลว) ให้เริ่มจากส่วนโหมดความล้มเหลวของบริดจ์นั้นใน การเสริมความแข็งแกร่งของพื้นผิวตัวเรนเดอร์