หากการอัปโหลดผ่านเบราว์เซอร์ Nextcloud หยุดที่ 2 GB ให้เพิ่มขีดจำกัดในทุกเลเยอร์ที่จัดการคำขอ ได้แก่ PHP, เว็บเซิร์ฟเวอร์หรือรีเวิร์สพร็อกซี และพื้นที่จัดเก็บชั่วคราวที่ใช้งานอยู่ สำหรับเป้าหมายขนาด 5 GB การตั้งค่า PHP-FPM และ Nginx ทั่วไปต้องการupload_max_filesize = 5G, post_max_size = 6G, และclient_max_body_size 5Gรวมถึงพื้นที่ดิสก์และเวลาเพียงพอสำหรับการถ่ายโอน
ไม่มีข้อจำกัด 2 GB ตายตัวสำหรับ Nextcloud คู่มือการดูแลระบบฉบับปัจจุบันระบุว่าขนาดการอัปโหลดสูงสุดเริ่มต้นที่ 512 MB ในขณะที่ข้อจำกัดต่ำกว่า 2 GB เป็นขีดจำกัดสูงสุดบนระบบ 32 บิต เซิร์ฟเวอร์ที่หยุดที่ 2 GB พอดีนั้น มีแนวโน้มที่จะติดขีดจำกัดที่ตั้งค่าไว้หรือตัวกลางมากกว่า ขั้นตอนด้านล่างใช้ 5 GB เป็นตัวอย่าง โปรดแทนที่ด้วยขนาดไฟล์ที่ใหญ่ที่สุดที่คุณต้องการใช้งานจริง
ข้อจำกัด 2 GB นี้มาจาก Nextcloud ใช่หรือไม่?
โดยทั่วไปแล้ว ขีดจำกัดที่มองเห็นได้จะถูกกำหนดโดย PHP หรือเว็บเซิร์ฟเวอร์ มากกว่าการตั้งค่าของ Nextcloud ขีดจำกัดสูงสุดที่ Nextcloud รองรับยังขึ้นอยู่กับระบบปฏิบัติการ ระบบไฟล์ โควต้าบัญชี และพื้นที่ดิสก์ชั่วคราวที่ว่างอยู่ด้วย ส่วนโปรแกรมซิงค์ข้อมูลบนเดสก์ท็อปนั้นเป็นกรณีพิเศษ: มันจะถ่ายโอนไฟล์เป็นส่วนย่อยๆ และไม่อยู่ภายใต้ข้อจำกัดการอัปโหลดต่อคำขอเดียวแบบเดียวกันกับที่อธิบายไว้ในที่นี้
ขั้นแรก ให้ระบุเส้นทางการร้องขอ ตรวจสอบว่าผู้ใช้ทำการอัปโหลดผ่านเบราว์เซอร์ WebDAV หรือไคลเอ็นต์บนเดสก์ท็อป และเว็บไซต์นั้นผ่าน Nginx, Apache, โหลดบาลานเซอร์ หรือพร็อกซีของผู้ให้บริการโฮสติ้งหรือไม่ หากคุณไม่ได้เป็นผู้ดูแลระบบเซิร์ฟเวอร์ ให้ส่งขนาดไฟล์ที่ล้มเหลว วิธีการอัปโหลด เวลาที่เกิดข้อผิดพลาด และรหัสข้อผิดพลาดใดๆ ให้กับผู้ดูแลระบบ เนื่องจากมีเพียงผู้ดูแลระบบเท่านั้นที่สามารถเปลี่ยนแปลงข้อจำกัดฝั่งเซิร์ฟเวอร์ได้
คุณควรเปลี่ยนการตั้งค่า PHP ใดบ้าง?
สำหรับ PHP-FPM ให้แก้ไขการตั้งค่าที่ใช้โดยบริการ PHP-FPM ที่ให้บริการ Nextcloud ไม่ใช่แค่การตั้งค่า PHP ผ่านบรรทัดคำสั่ง บน Debian หรือ Ubuntu เส้นทางทั่วไปคือ/etc/php/8.2/fpm/php.ini; แทนที่8.2ด้วยเวอร์ชัน PHP ที่ติดตั้งไว้ การแจกจ่ายหรือคอนเทนเนอร์ของคุณอาจใช้เส้นทางที่แตกต่างกัน คู่มือ PHP ระบุว่าpost_max_sizeต้องมีขนาดใหญ่กว่าupload_max_filesizeดังนั้นควรเผื่อพื้นที่สำหรับค่าใช้จ่ายในการร้องขอด้วย
ตัวอย่างเส้นทางไฟล์การกำหนดค่า PHP-FPM ใช้เวอร์ชัน PHP และเส้นทางไฟล์ที่ใช้งานอยู่ในบริการ Nextcloud ของคุณเอง
ตั้งค่าให้เหมาะสมกับเซิร์ฟเวอร์ของคุณ สำหรับตัวอย่างขนาด 5 GB:
upload_max_filesize = 5G
post_max_size = 6G
max_input_time = 3600
max_execution_time = 3600
ตัวอย่างค่า PHP-FPM สำหรับเป้าหมายการอัปโหลดขนาด 5 GB โดยตั้งค่า post_max_size ให้สูงกว่า upload_max_filesize
ค่าหมดเวลาที่ระบุไว้เป็นเพียงตัวอย่าง ไม่ใช่ข้อกำหนดสากล การเชื่อมต่อที่ช้า เซิร์ฟเวอร์ที่ไม่ว่าง และการอัปโหลดที่ต้องประกอบเข้าด้วยกันในตอนท้าย อาจต้องใช้เวลานานขึ้น การตั้งค่าหน่วยความจำ PHP และขีดจำกัดทรัพยากรต่อเวิร์กเกอร์ยังคงมีความสำคัญ อย่าตั้งค่าขีดจำกัดหน่วยความจำของเวิร์กเกอร์ PHP-FPM ทุกตัวเป็นหลายกิกะไบต์โดยอัตโนมัติ คำแนะนำของ Nextcloud เกี่ยวกับ PHP ระบุว่าควรมีหน่วยความจำอย่างน้อย 512 MB ต่อกระบวนการ ตรวจสอบโฮสต์และพูล PHP-FPM ก่อนที่จะเพิ่มขีดจำกัดทรัพยากร
บันทึกไฟล์และรีสตาร์ทบริการ PHP-FPM ที่เกี่ยวข้องเพื่อให้ระบบอ่านการตั้งค่าใหม่ ตัวอย่างเช่น ในระบบที่ใช้ PHP 8.2 บริการอาจเป็นดังนี้php8.2-fpm:
sudo systemctl restart php8.2-fpm
ชื่อบริการอาจแตกต่างกันไป ในคอนเทนเนอร์ ให้ทำการอัปเดตการกำหนดค่าหรืออิมเมจที่ติดตั้งไว้ และสร้างคอนเทนเนอร์ PHP ใหม่ตามกระบวนการของการปรับใช้ดังกล่าว
จะเพิ่มขีดจำกัดของเว็บเซิร์ฟเวอร์ได้อย่างไร?
สำหรับ Nginx ให้ใส่คำสั่ง body-size ในserverบล็อกที่ใช้งานอยู่สำหรับ Nextcloud หรือlocationบล็อกที่เหมาะสมเฉพาะเจาะจงกว่านั้น:
client_max_body_size 5G;
กำหนดค่าจำกัดขนาดเนื้อหาของ Nginx ไว้ในบล็อกเซิร์ฟเวอร์ที่ใช้งานอยู่ซึ่งจัดการคำขอจาก Nextcloud
จากนั้นตรวจสอบความถูกต้องของการตั้งค่าและรีโหลด Nginx:
sudo nginx -t
sudo systemctl reload nginx
หาก Nginx รายงานข้อผิดพลาดทางไวยากรณ์ ให้แก้ไขก่อนทำการรีโหลด หากมีพร็อกซี ตัวควบคุมขาเข้า หรือเกตเวย์โฮสติ้งอื่นอยู่ด้านหน้า อาจมีการจำกัดขนาดของเนื้อหาคำขอของตนเอง ให้เพิ่มขีดจำกัดนั้นด้วย การจำกัดขนาดของพร็อกซีต้นทางอาจปฏิเสธการอัปโหลดได้ แม้ว่าโฮสต์ Nextcloud จะได้รับการกำหนดค่าอย่างถูกต้องแล้วก็ตาม
สำหรับ Apache ให้ตรวจสอบLimitRequestBodyในการตั้งค่าโฮสต์เสมือนหรือไดเร็กทอรีที่เกี่ยวข้อง เอกสาร Nextcloud ปัจจุบันระบุว่า Apache HTTP Server เวอร์ชัน 2.4.54 และใหม่กว่าจะตั้งค่าเริ่มต้นของคำสั่งนี้เป็น 1 GiB ซึ่งอาจบล็อกการอัปโหลดคำขอเดียวที่มีขนาดเกินกว่านั้นได้ กำหนดขีดจำกัดไบต์ที่เหมาะสมสำหรับโฮสต์ หรือใช้0เฉพาะในกรณีที่คุณต้องการให้ Apache ไม่มีข้อจำกัดขนาดเนื้อหา Apache อาจต้องการเวลาหมดอายุของคำขอที่นานขึ้น โดยเฉพาะอย่างยิ่งหากmod_reqtimeoutเปิดใช้งานอยู่
พื้นที่จัดเก็บไม่เพียงพอหรือหมดเวลาการอัปโหลด ยังสามารถหยุดการอัปโหลดได้หรือไม่?
ใช่แล้ว โฟลเดอร์ชั่วคราวสำหรับการอัปโหลดของ PHP, โฟลเดอร์ชั่วคราวที่กำหนดค่าไว้ของ Nextcloud และของ Nginx client_body_temp_pathต้องมีพื้นที่ว่างเพียงพอและสามารถเขียนได้ เว้นที่ว่างไว้สำหรับการอัปโหลดพร้อมกัน และในบางการกำหนดค่าพื้นที่จัดเก็บข้อมูล อาจรวมถึงการประกอบชิ้นส่วนที่อัปโหลดแล้วด้วย ตรวจสอบระบบไฟล์ที่เกี่ยวข้องด้วยdf -hและยืนยันว่าบัญชีบริการสามารถเขียนไปยังโฟลเดอร์ชั่วคราวที่กำหนดค่าไว้ได้ อย่าตั้งค่าโฟลเดอร์ชั่วคราวไปยังไดรฟ์ที่เต็มหรืออ่านได้อย่างเดียว
ตรวจสอบโควต้า Nextcloud ของผู้ใช้และพื้นที่เก็บข้อมูลว่างของเซิร์ฟเวอร์ด้วย การเพิ่มขีดจำกัดขนาดคำขอไม่ได้เพิ่มโควต้าของผู้ใช้หรือสร้างพื้นที่ดิสก์ใหม่ เพิ่มโควต้าเฉพาะเมื่อบัญชีมีพื้นที่เพียงพอสำหรับไฟล์นั้น หากเกิดข้อผิดพลาดใกล้กับช่วงท้ายของการอัปโหลด หรือรายงานข้อผิดพลาดหมดเวลาหรือเกตเวย์ ให้ตรวจสอบบันทึกของ PHP, เว็บเซิร์ฟเวอร์, พร็อกซี และ Nextcloud ก่อนที่จะเพิ่มขีดจำกัดเพิ่มเติม คู่มือ Nextcloud ระบุอย่างชัดเจนว่าการหมดเวลาของ PHP และ Nginx fastcgi_read_timeoutเป็นสาเหตุที่เป็นไปได้ รวมถึงระหว่างคำขอ MOVE สุดท้ายด้วย
upload_max_filesizeข้อควรระวังอย่างหนึ่งคือ ฟังก์ชัน การทำงาน ของ PHP post_max_sizeอาจไม่ควบคุมการอัปโหลดไฟล์เดียวผ่าน WebDAV หรือการอัปโหลดแบบแบ่งเป็นส่วนๆ ของ Nextcloud ในลักษณะเดียวกัน สำหรับเส้นทางเหล่านั้น เวลาหมดอายุของ PHP และเว็บเซิร์ฟเวอร์อาจเป็นปัจจัยจำกัด ตรวจสอบวิธีการอัปโหลดก่อนที่จะเปลี่ยนแปลงค่าที่ไม่เกี่ยวข้องกับวิธีการนั้น
คุณจะยืนยันการแก้ไขปัญหาได้อย่างไร?
เริ่มต้นด้วยไฟล์ทดสอบหนึ่งไฟล์ที่มีขนาดใหญ่กว่าขีดจำกัดเดิมเล็กน้อย จากนั้นทดสอบไฟล์ที่มีขนาดใกล้เคียงกับเป้าหมายใหม่ อัปโหลดผ่านเบราว์เซอร์หรือโปรแกรมเดียวกันกับที่เคยล้มเหลวในครั้งแรก ตรวจสอบว่าการถ่ายโอนเสร็จสมบูรณ์ ไฟล์ปรากฏขึ้นด้วยขนาดที่คาดไว้ และสามารถดาวน์โหลดหรือเปิดได้ ตัวบ่งชี้สีเขียวที่แสดงว่าการอัปโหลดเสร็จสมบูรณ์ในมุมมองไฟล์เป็นวิธีตรวจสอบเบื้องต้นที่มีประโยชน์ แต่ควรเปรียบเทียบขนาดไฟล์ที่จัดเก็บไว้ด้วย
หลังจากทำการเปลี่ยนแปลงแล้ว โปรดตรวจสอบว่าไฟล์ทดสอบที่มีขนาดใหญ่กว่าขีดจำกัดเดิมแสดงผลตามขนาดที่คาดไว้และแสดงว่าเสร็จสมบูรณ์แล้ว
หากการทดสอบยังคงล้มเหลว ให้ใช้ข้อผิดพลาดนั้นเพื่อค้นหาข้อจำกัดถัดไป: HTTP 413 บ่งชี้ถึงข้อจำกัดของเนื้อหาคำขอ 504 หรือความล้มเหลวใกล้เสร็จสมบูรณ์บ่งชี้ถึงการหมดเวลา และข้อความเกี่ยวกับโควต้าหรือพื้นที่ดิสก์บ่งชี้ถึงความจุของพื้นที่จัดเก็บข้อมูล ตรวจสอบบันทึกในช่วงเวลาเดียวกัน จากนั้นปรับเฉพาะการตั้งค่าที่เกี่ยวข้องเท่านั้น รักษาขีดจำกัดให้ใกล้เคียงกับปริมาณการอัปโหลดสูงสุดที่คาดไว้ และรักษาพื้นที่ชั่วคราวให้เพียงพอสำหรับการใช้งานพร้อมกัน
เอกสารอย่างเป็นทางการ