แก้ปัญหา CPU กระชากเร็วใน Nextcloud Preview ด้วยคิวที่กำหนดเวลาไว้
ย้ายการสร้างภาพขนาดย่อไปไว้ในกำหนดการพื้นหลังที่ควบคุมได้ ตัดขนาดภาพตัวอย่างที่ไม่ได้ใช้ และตรวจสอบคิวโดยไม่ทำให้เซิร์ฟเวอร์ Nextcloud ของคุณทำงานหนักเกินไป
หาก CPU ของเซิร์ฟเวอร์ Nextcloud ของคุณทำงานหนักขณะที่กำลังสร้างภาพตัวอย่าง มักเป็นเพราะภาระงานมาอย่างฉับพลัน เช่น ผู้ใช้เปิดโฟลเดอร์ที่มีรูปภาพจำนวนมาก การจัดทำดัชนีไลบรารีขนาดใหญ่ หรือการสร้างภาพตัวอย่างที่มีขนาดไฟล์มากกว่าที่ผู้ใช้ต้องการ ติดตั้งแอป Preview Generator ของ Nextcloud ตั้งค่าให้แอปประมวลผลไฟล์ใหม่และไฟล์ที่เปลี่ยนแปลงตามกำหนดเวลา และตัดขนาดภาพตัวอย่างที่ไม่จำเป็นออก วิธีนี้จะช่วยย้ายภาระงานออกจากช่วงเวลาการเรียกดูเว็บไซต์ที่ยุ่งอยู่ แต่ไม่ได้ทำให้การแปลงรูปภาพฟรีหรือกำจัดภาระงานในการประมวลผลเบื้องต้นแต่อย่างใด
ขั้นตอนเหล่านี้เป็นไปตาม README ของ Preview Generator และเอกสารประกอบของ Nextcloud 35 ที่ตรวจสอบเมื่อวันที่ 10 ตุลาคม 2026 โปรดตรวจสอบความเข้ากันได้สำหรับเวอร์ชันที่จะเผยแพร่ใน Nextcloud App Store README ระบุว่าไฟล์ที่เข้ารหัสไม่ได้รับการสนับสนุน
Nextcloud จะสร้างภาพขนาดย่อเมื่อผู้ใช้ร้องขอ เว้นแต่จะมีภาพตัวอย่างอยู่แล้ว การถอดรหัสภาพ การปรับขนาด และการแปลงภาพ โดยเฉพาะอย่างยิ่งสำหรับภาพต้นฉบับขนาดใหญ่หรือภาพที่มีมิติหลายขนาด อาจใช้ทรัพยากร CPU และหน่วยความจำมาก การร้องขอจำนวนมากพร้อมกันจะทำให้เห็นการทำงานเหล่านี้ในขณะที่ผู้ใช้กำลังใช้งานอยู่
โปรแกรมสร้างตัวอย่าง (Preview Generator) จะจัดคิวไฟล์ใหม่หรือไฟล์ที่แก้ไขแล้วเพื่อประมวลผลในพื้นหลัง การประมวลผลตัวอย่างที่มีอยู่แล้วนั้นมีต้นทุนต่ำกว่า แต่ตัวอย่างที่หายไปจะยังคงใช้เส้นทางการประมวลผลแบบตามความต้องการของ Nextcloud แอปจะย้ายงานบางส่วนไปยังช่วงเวลาที่มีการใช้งานน้อยกว่า แต่ไม่สามารถลดการประมวลผลโดยรวมหรือแก้ไขปัญหาคอขวดอื่นๆ เช่น การแปลงวิดีโอหรือการจัดเก็บข้อมูลที่ช้าได้
ในการตั้งค่าการดูแลระบบ ให้ตรวจสอบงานเบื้องหลัง งานในตัวของ Preview Generator ต้องการโหมด Cron; ใน README ระบุว่า AJAX และ Webcron ไม่รองรับงานที่ใช้เวลานานนี้ Nextcloud แนะนำให้ใช้ Cron ของระบบ ตรวจสอบให้แน่ใจว่าหน้าผู้ดูแลระบบรายงานว่าใช้ Cron
ติดตั้ง Preview Generator จากหน้าจอ Apps หรือ หากการใช้งานของคุณใช้ OCC และอนุญาตให้ติดตั้งแอป ให้รันคำสั่งเหล่านี้จากไดเร็กทอรีการติดตั้ง Nextcloud บน Debian หรือ Ubuntu บัญชีเว็บเซิร์ฟเวอร์มักจะเป็นwww-data; ใช้ผู้ใช้ HTTP จริงและเวอร์ชัน PHP CLI สำหรับโฮสต์ของคุณ:
sudo -u www-data php /var/www/nextcloud/occ app:install previewgenerator
sudo -u www-data php /var/www/nextcloud/occ app:enable previewgenerator
หากติดตั้งไว้แล้ว ให้ข้ามคำสั่งแรก ตรวจสอบสถานะและคำสั่งที่มีให้ใช้งาน:
sudo -u www-data php /var/www/nextcloud/occ app:list
sudo -u www-data php /var/www/nextcloud/occ list preview
เรียกใช้ OCC ในฐานะผู้ใช้ HTTP เพื่อให้การเป็นเจ้าของไฟล์มีความสอดคล้องกัน เส้นทางและผู้ใช้จะแตกต่างกันไปตามการใช้งาน โปรดดูเอกสารประกอบ OCC ของ Nextcloud
โปรแกรม Preview Generator สามารถสร้างภาพขนาดย่อแบบสี่เหลี่ยมจัตุรัสและภาพตัวอย่างตามอัตราส่วนภาพในขนาดที่กำหนดค่าได้ ในไฟล์ README ระบุว่าขนาดต้องเป็นกำลังของสี่ และค่าว่างจะข้ามหมวดหมู่ภาพตัวอย่างนั้นไป ตัวอย่างโปรไฟล์เริ่มต้นที่จำกัดสำหรับเซิร์ฟเวอร์ที่มีภาระงานมากแสดงอยู่ด้านล่าง โดยจะคงภาพสี่เหลี่ยมจัตุรัสขนาดเล็กและภาพตัวอย่างสองขนาดตามอัตราส่วนภาพไว้ ในขณะที่ข้ามตัวเลือกความกว้างอย่างเดียวและความสูงอย่างเดียวไป:
sudo -u www-data php /var/www/nextcloud/occ config:app:set --value="64 256" previewgenerator squareSizes
sudo -u www-data php /var/www/nextcloud/occ config:app:set --value="256 1024" previewgenerator fillWidthHeightSizes
sudo -u www-data php /var/www/nextcloud/occ config:app:set --value="" previewgenerator widthSizes
sudo -u www-data php /var/www/nextcloud/occ config:app:set --value="" previewgenerator heightSizes
โปรไฟล์การโหลดต่ำนี้ไม่ได้ใช้ได้กับทุกแอปพลิเคชัน: แอปบางแอปอาจต้องการภาพตัวอย่างขนาดใหญ่กว่าหรือรูปทรงอื่นๆ หากภาพขนาดย่อหายไปหรือดูไม่ชัด ให้ระบุมุมมองที่ต้องการและเพิ่มเฉพาะขนาดของมุมมองนั้น ขนาดที่ใหญ่ขึ้นจะเพิ่มการประมวลผลและการใช้แคช ชุดขนาดขั้นต่ำที่แนะนำใน README สำหรับแอป Files, Photos และ Activity ใช้ขนาด 4096 พิกเซลที่ใหญ่กว่า โปรดประเมินข้อดีข้อเสียบนฮาร์ดแวร์ของคุณ ดูREADME อย่างเป็นทางการของ Preview Generator ; ซึ่งใช้ขนาดอัตราส่วนภาพ 4096 พิกเซลที่ใหญ่กว่า ดังนั้นโปรดประเมินข้อดีข้อเสียบนฮาร์ดแวร์ของคุณ
การตั้งค่าต่างๆจะจำกัดจำนวนพิกเซลโดยรวม สำรองไฟล์ก่อนทำการแก้ไขและตรวจสอบให้แน่ใจว่าไฟล์นั้นใช้งานได้กับขนาดแอปที่เลือก การปิดใช้งานการแสดงตัวอย่างจะลบภาพขนาดย่อออกจากแอปpreview_max_xต่างๆpreview_max_yconfig/config.php
สำหรับเซิร์ฟเวอร์ขนาดเล็ก ตัวจัดการคิวในตัวก็เพียงพอแล้วเมื่อเปิดใช้งานโหมด Cron งานเริ่มต้นของมันจะจำกัดเวลาสูงสุดไว้ที่ห้านาทีต่อการทำงาน และแอปจะให้สถิติคิวสำหรับการตรวจสอบ หากคุณต้องการช่วงเวลาที่คาดการณ์ได้นอกช่วงเวลาที่มีการใช้งานสูงสุด ให้ใช้คำสั่ง OCC เฉพาะใน cron ของระบบแทน เมื่อใช้กำหนดการแบบกำหนดเองนั้น ให้ปิดใช้งานงานคิวเริ่มต้นของแอป เพื่อไม่ให้กลไกทั้งสองแย่งกันทำงาน:
sudo -u www-data php /var/www/nextcloud/occ config:app:set --value=true --type=boolean previewgenerator job_disabled
จากนั้นแก้ไข crontab สำหรับผู้ใช้เว็บเซิร์ฟเวอร์ ( sudo crontab -u www-data -e) และเพิ่มกำหนดการตัวอย่าง เช่น:
*/10 * * * * php -f /var/www/nextcloud/occ preview:pre-generate
สิบนาทีเป็นเพียงตัวอย่างเท่านั้น เลือกจังหวะและช่วงเวลาที่เหมาะสมกับปริมาณการใช้งานและความจุของคุณ ตรวจสอบเส้นทาง PHP และ OCC ของคุณ อย่ากำหนดเวลาคำสั่งนี้ที่อื่นด้วย คงcron.phpการทำงานปกติของ Nextcloud ไว้ ซึ่งจะทำงานเบื้องหลังอื่นๆ ดู เอกสาร คู่มือการทำงานเบื้องหลังของ Nextcloudสำหรับการตั้งค่า cron ของระบบ
เอกสาร README แนะนำให้preview:generate-allทำการสแกนไฟล์ที่มีอยู่แล้วหลังจากการติดตั้งเสร็จสิ้น ในไลบรารีขนาดใหญ่ การสแกนเพื่อตามให้ทันอาจทำให้ CPU ทำงานหนักมาก หลีกเลี่ยงการใช้งาน worker จำนวนมากบนเซิร์ฟเวอร์ที่มีการใช้งานหนัก เริ่มต้นด้วยผู้ใช้หรือพาธเดียวในช่วงเวลาที่ไม่วุ่นวาย และตรวจสอบ CPU หน่วยความจำ ปริมาณการรับส่งข้อมูลดิสก์ และพื้นที่ว่าง คำสั่งนี้รองรับรหัสผู้ใช้ พาธ และจำนวน worker เริ่มต้นด้วย worker เดียว หากจำเป็น ให้แบ่งการสแกนออกเป็นหลายช่วงเวลา
หลังจากคำสั่งทำงานเสร็จแล้ว ให้ตรวจสอบคิว:
sudo -u www-data php /var/www/nextcloud/occ preview:queue-stats
สถิติคิวประกอบด้วยภาพตัวอย่างที่ล้าสมัย การลดลงของคิวค้างและการใช้งาน CPU สูงสุดที่สิ้นสุดลงด้วยงานที่กำหนดไว้ แสดงว่าคิวกำลังคืบหน้า เปิดโฟลเดอร์ตัวอย่างเพื่อตรวจสอบภาพขนาดย่อ จากนั้นสังเกตการเรียกดูตามปกติ เปรียบเทียบการใช้งาน CPU ในระดับปริมาณการใช้งานที่ใกล้เคียงกัน การใช้งาน CPU จะไม่ลดลงเหลือศูนย์
หากคิวไม่ลดลง ให้ตรวจสอบบันทึก cron และเรียกใช้preview:pre-generate -vvในหน้าต่างที่ควบคุมได้เพื่อดูไฟล์ที่ประมวลผลแล้ว หาก CPU ยังคงใช้งานสูงหลังจากคิวถูกเคลียร์แล้ว ให้ตรวจสอบเวิร์กเกอร์ PHP อื่นๆ งาน หรือบริการสื่ออื่นๆ หากการแสดงตัวอย่างใช้พื้นที่ดิสก์มากเกินไป ให้ลบขนาดที่ไม่ใช้งานหรือลดขนาดลง ตรวจสอบให้แน่ใจว่าการแสดงตัวอย่างที่เหลืออยู่รองรับมุมมองที่ผู้ใช้ต้องการ
ย้ายการสร้างภาพขนาดย่อไปไว้ในกำหนดการพื้นหลังที่ควบคุมได้ ตัดขนาดภาพตัวอย่างที่ไม่ได้ใช้ และตรวจสอบคิวโดยไม่ทำให้เซิร์ฟเวอร์ Nextcloud ของคุณทำงานหนักเกินไป
ค้นหาไฟล์ กฎการยกเว้น ปัญหาการเชื่อมต่อ หรือสถานะฐานข้อมูลไคลเอ็นต์ที่ทำให้การซิงค์ Nextcloud หยุดชะงัก จากนั้นตรวจสอบการอัปโหลดและดาวน์โหลดอย่างปลอดภัย
ค้นหาข้อจำกัดของ PHP OPcache ที่ทำให้เกิดคำเตือนของ Nextcloud อัปเดตการตั้งค่า PHP สำหรับเว็บให้ถูกต้อง รีสตาร์ทอย่างปลอดภัย และตรวจสอบผลลัพธ์
เปรียบเทียบ CODE ที่ติดตั้งมากับระบบและ CODE ที่ใช้ Docker จากนั้นเชื่อมต่อ Collabora Online กับ Nextcloud ผ่านพร็อกซีแบบย้อนกลับ HTTPS ที่ปลอดภัย
วางแผนการใช้งาน Nextcloud HA ที่เชื่อถือได้ โดยใช้พื้นที่จัดเก็บข้อมูลร่วมกัน การล็อก Redis การกำหนดเส้นทาง MariaDB ที่คำนึงถึงจำนวนเสียงข้างมาก และการตรวจสอบการทำงานล้มเหลวที่ใช้งานได้จริง
กำหนดค่าและตรวจสอบรีเลย์ TURN ที่สามารถเข้าถึงได้สำหรับ Nextcloud Talk เมื่อไฟร์วอลล์หรือ NAT ที่จำกัดปิดกั้นสื่อการโทรโดยตรง
ใช้รายงานไฟล์ที่ไม่ถูกต้องเพื่อระบุโค้ด Nextcloud ที่เปลี่ยนแปลง หายไป หรือเกินมา กู้คืนไฟล์ที่เชื่อถือได้อย่างปลอดภัย และตรวจสอบผลลัพธ์
ตั้งค่า OAuth2 สำหรับ Nextcloud Mail กับ Gmail หรือ Microsoft 365 ตรวจสอบการรับและส่ง และแก้ไขปัญหาการขอความยินยอมและข้อผิดพลาด SMTP ทั่วไป
ใช้ OCC เพื่อกู้คืนการเข้าถึง Nextcloud ตรวจสอบสถานะการย้ายฐานข้อมูล และเลือกคำสั่งที่ถูกต้องสำหรับการติดตั้งแบบเก็บถาวร Docker หรือ Snap
เชื่อมต่อ Nextcloud กับ LDAP หรือ Active Directory จำกัดการเข้าถึงด้วยตัวกรองผู้ใช้และกลุ่ม และตรวจสอบการรับรองความถูกต้องที่ปลอดภัยก่อนเปิดใช้งาน