แก้ไขปัญหา “ขีดจำกัดหน่วยความจำ PHP ต่ำกว่าค่าที่แนะนำ” ใน ownCloud 10

ผลลัพธ์ที่คุณต้องการไม่ใช่เพียงแค่ “คำเตือนหายไป”การแก้ไขที่ถูกต้องหมายความว่ากระบวนการ PHP ที่ให้บริการ ownCloud 10 นั้นรายงานขีดจำกัดหน่วยความจำอย่างน้อย 512 MB คำเตือนของผู้ดูแลระบบ ownCloud หายไป งานที่กำหนดเวลาไว้หรืองานที่เรียกใช้ผ่าน CLI ก็ใช้ขีดจำกัดที่เหมาะสมเช่นกัน และโฮสต์ยังมีหน่วยความจำทางกายภาพเพียงพอที่จะเรียกใช้ PHP เว็บเซิร์ฟเวอร์ ฐานข้อมูล และงานเบื้องหลังโดยไม่ต้องมีการสลับหน่วยความจำมากเกินไป

สำหรับ ownCloud Classic 10.16 สภาพแวดล้อม Docker อย่างเป็นทางการOWNCLOUD_MEMORY_LIMIT=512Mแนะนำให้ใช้ค่าเริ่มต้นดังกล่าว เอกสารของ ownCloud ยังแยกความแตกต่างระหว่างการกำหนดค่า PHP ที่ใช้โดยเว็บเซิร์ฟเวอร์กับที่ใช้โดยphp-cliความแตกต่างนี้เป็นสาเหตุหลักที่บางครั้งผู้ดูแลระบบเปลี่ยนmemory_limitรีสตาร์ทบริการ และยังคงเห็นคำเตือนเดิมอยู่

คู่มือนี้เริ่มต้นด้วยการตรวจสอบที่ก่อให้เกิดผลกระทบน้อยที่สุด จากนั้นแสดงเส้นทางของ Apache, PHP-FPM, CLI และ Docker นอกจากนี้ยังอธิบายว่าเมื่อใดควรเพิ่มขีดจำกัดให้สูงขึ้น และเมื่อใดที่ปัญหาที่แท้จริงคือ RAM ของโฮสต์ไม่เพียงพอมากกว่าการตั้งค่า PHP เอง

ความสำเร็จมีหน้าตาอย่างไร

ตรวจสอบผลลัพธ์ที่ดีหากล้มเหลว
ภาพรวมผู้ดูแลระบบ ownCloudไม่มีคำเตือน “ขีดจำกัดหน่วยความจำ PHP ต่ำกว่าค่าที่แนะนำ”คุณอาจแก้ไขการตั้งค่า PHP ผิด หรือไม่ได้รีสตาร์ทบริการที่ถูกต้อง
เว็บ PHP รันไทม์memory_limitแสดงค่า 512M หรือสูงกว่าค้นหาไฟล์การกำหนดค่าที่โหลดแล้วซึ่งใช้โดยคำขอเว็บ
CLI / รันไทม์ cronphp -r 'echo ini_get("memory_limit");'แสดงถึงค่าที่ตั้งใจไว้แก้ไขส่วนที่เกี่ยวข้องกับ CLI php.iniด้วยเช่นกัน
หน่วยความจำโฮสต์มี RAM เพียงพอ หรือมีแรงกดดันในการสลับข้อมูลน้อยมากหรือไม่มีเลยอย่าเพิ่มขีดจำกัด PHP อย่างไม่ระมัดระวัง ตรวจสอบจำนวนเวิร์กเกอร์ PHP หรือขนาดของโฮสต์อีกครั้ง
บันทึกไม่มีข้อผิดพลาด “หน่วยความจำที่อนุญาตเต็มแล้ว” เกิดขึ้นซ้ำอีกตรวจสอบภาระงานที่ใช้หน่วยความจำมากก่อนที่จะเพิ่มขีดจำกัดอีกครั้ง

1. ยืนยันคำเตือนและค่าที่ ownCloud ตรวจพบ

หน้าภาพรวมผู้ดูแลระบบ ownCloud 10 แสดงคำเตือนว่าขีดจำกัดหน่วยความจำ PHP ต่ำกว่าค่าที่แนะนำ และขีดจำกัด 128 MB
เริ่มต้นจากค่าที่ ownCloud สามารถมองเห็นได้เอง ขีดจำกัด web-runtime ที่ 128 MB หรือ 256 MB นั้นต่ำกว่าค่า 512 MB ที่ ownCloud แนะนำสำหรับการกำหนดค่า Docker

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

เอกสารประกอบการใช้งาน ownCloud เวอร์ชัน 10.16 ปัจจุบันระบุว่า ความต้องการของเซิร์ฟเวอร์ขึ้นอยู่กับจำนวนผู้ใช้ จำนวนไฟล์ และกิจกรรมเป็นอย่างมาก การกำหนดค่า Docker ของ ownCloud OWNCLOUD_MEMORY_LIMIT=512Mแนะนำให้ใช้ค่าเริ่มต้นนี้ ดังนั้น 512 MB จึงเป็นค่าพื้นฐานที่เหมาะสมสำหรับการแก้ไขคำเตือน ไม่ใช่การรับประกันว่าทุกปริมาณงานจะสามารถใช้งานได้ภายใน 512 MB

เอกสารอ้างอิงอย่างเป็นทางการ: คำแนะนำในการติดตั้งใช้งาน ownCloudและตัวแปรสภาพแวดล้อม Docker ของ ownCloud

2. อย่าเชื่อถือค่าที่แสดงในบรรทัดคำสั่ง (CLI) ว่าเป็นตัวแทนของเว็บเซิร์ฟเวอร์

หน้าต่างเทอร์มินัลของ Ubuntu แสดงผลลัพธ์จากคำสั่ง php -i และ php --ini พร้อมข้อจำกัดหน่วยความจำ CLI ที่ 128M และเส้นทางของไฟล์ php.ini ใน CLI
php --iniรายงานนี้แสดงการตั้งค่าสำหรับ PHP CLI ซึ่งอาจแตกต่างจากการตั้งค่า PHP ที่ Apache หรือ PHP-FPM ใช้ในการให้บริการ ownCloud

เรียกใช้คำสั่งเหล่านี้เพื่อดูว่ากระบวนการ PHP ในบรรทัดคำสั่งใช้อะไรบ้าง:

php --ini
php -r 'echo ini_get("memory_limit"), PHP_EOL;'

สิ่งนี้มีประโยชน์สำหรับoccงาน Cron แต่ไม่ใช่หลักฐานยืนยันว่าคำขอเว็บใช้อะไร ownCloud ได้ระบุเส้นทางการกำหนดค่าแยกต่างหากไว้อย่างชัดเจน เช่น:

/etc/php/<version>/apache2/php.ini
/etc/php/<version>/fpm/php.ini
/etc/php/<version>/cli/php.ini

หาก CLI ของคุณแสดงค่า 512M ในขณะที่หน้าผู้ดูแลระบบยังคงแสดงข้อผิดพลาด ความไม่ตรงกันนี้เป็นสัญญาณที่ชัดเจนว่าเว็บเซิร์ฟเวอร์กำลังโหลดไฟล์อื่นphp.iniอยู่

โปรดดูหมายเหตุเกี่ยวกับการกำหนดค่า PHP ของ ownCloudซึ่งระบุไว้อย่างชัดเจนว่าอาจจำเป็นต้องเปลี่ยนแปลงการตั้งค่า PHP ในไฟล์ INI มากกว่าหนึ่งไฟล์

3. ค้นหาการตั้งค่า PHP ที่ใช้โดยคำขอเว็บ

หน้า phpinfo ในเบราว์เซอร์แสดงไฟล์การกำหนดค่า PHP-FPM ที่โหลดแล้ว และค่า memory_limit 128M พร้อมกับเทอร์มินัลที่แสดงการกำหนดค่า CLI
เปรียบเทียบรันไทม์ PHP ในเบราว์เซอร์กับรันไทม์ CLI ไฟล์การกำหนดค่าที่โหลดในเบราว์เซอร์คือไฟล์ที่มีผลต่อคำเตือนบนเว็บ ownCloud

วิธีทดสอบที่น่าเชื่อถือที่สุดคือการตรวจสอบโค้ด PHP จากเว็บเซิร์ฟเวอร์เดียวกันกับที่ให้บริการ ownCloud เอกสารของ ownCloud อธิบายวิธีการใช้phpinfo.phpหน้าเว็บชั่วคราวไว้ดังนี้:

<?php phpinfo(); ?>

วางไฟล์นี้ไว้ในไดเร็กทอรีหลักของเว็บชั่วคราว เปิดในเบราว์เซอร์ และค้นหา:

  • โหลดไฟล์การกำหนดค่าแล้ว
  • ขีดจำกัดหน่วยความจำ
  • API เซิร์ฟเวอร์

จากนั้นให้ลบไฟล์ phpinfo ทันที ownCloud เตือนว่าการปล่อยให้หน้า phpinfo สาธารณะอยู่นั้นจะทำให้ข้อมูลเซิร์ฟเวอร์ที่ละเอียดอ่อนรั่วไหลได้

หากเบราว์เซอร์แสดงข้อความ/etc/php/7.4/fpm/php.iniว่า ในขณะที่php --iniแสดงข้อความว่า/etc/php/7.4/cli/php.iniคุณก็รู้แล้วว่าเหตุใดการแก้ไขไฟล์ CLI จึงไม่ทำให้คำเตือนหายไป

4. PHP-FPM: เพิ่มขีดจำกัดของ web-runtime เป็น 512M

เปิดโปรแกรมแก้ไข Nano บนไฟล์ php.ini ของ PHP-FPM โดยตั้งค่า memory_limit เป็น 512M
สำหรับการตั้งค่า Nginx หรือ Apache ที่ใช้ PHP-FPM ให้เปลี่ยน FPM php.iniหรือการตั้งค่า pool/site override ที่เกี่ยวข้อง ไม่ใช่แค่ไฟล์ CLI เท่านั้น

ในการติดตั้ง Debian หรือ Ubuntu ทั่วไป:

sudo nano /etc/php/7.4/fpm/php.ini

หา:

memory_limit = 128M

และเปลี่ยนเป็น:

memory_limit = 512M

ใช้เวอร์ชัน PHP ที่ติดตั้งไว้ใน PATH จากนั้นรีสตาร์ทบริการ FPM ที่ถูกต้องและเว็บเซิร์ฟเวอร์ของคุณหากจำเป็น:

sudo systemctl restart php7.4-fpm
sudo systemctl reload nginx

สำหรับ Apache ที่ใช้proxy_fcgiFPM หรือการตั้งค่า FPM อื่นๆ ให้รีสตาร์ท PHP-FPM แล้วโหลด Apache ใหม่แทน

ownCloud ยังระบุด้วยว่า PHP-FPM ไม่ใช้การตั้งค่า PHP จากไฟล์.htaccess.php หากคุณใช้การตั้งค่าแบบเฉพาะต่อไดเร็กทอรีกับ FPM ให้ใช้กลไกการกำหนดค่า PHP/FPM ที่รองรับสำหรับสภาพแวดล้อมของคุณ เช่นphp.iniการกำหนดค่าพูล หรือไฟล์.user.ini. php ที่เหมาะสม

5. Apache พร้อม mod_php: แก้ไขการตั้งค่า PHP ของ Apache

โปรแกรมแก้ไข Nano แสดงค่า memory_limit ที่ตั้งไว้ที่ 512M ในไฟล์ php.ini ของ Apache ตามด้วยคำสั่งรีสตาร์ท Apache
ใช้ Apache mod_php เพื่อแก้ไขการตั้งค่า PHP เฉพาะของ Apache แล้วรีสตาร์ท Apache เพื่อให้กระบวนการทำงานใหม่โหลดขีดจำกัดใหม่

หาก Apache โหลด PHP โดยตรงเป็นโมดูล ให้แก้ไขไฟล์เฉพาะของ Apache:

sudo nano /etc/php/7.4/apache2/php.ini

ชุด:

memory_limit = 512M

จากนั้นให้รีสตาร์ท Apache:

sudo systemctl restart apache2

อย่าคัดลอกหมายเลขเวอร์ชันโดยอัตโนมัติ ตรวจสอบเวอร์ชันที่ Apache โหลดจริง ระบบที่อัปเกรดผ่าน PHP หลายเวอร์ชันมักจะเก็บไดเร็กทอรีหลายแห่งไว้ภายใต้/etc/php/.

เกณฑ์การตัดสินนั้นง่ายมาก: หลังจากรีสตาร์ทแล้ว รันไทม์ PHP ที่แสดงผลบนเว็บต้องแสดงค่าใหม่ หากยังคงแสดง 128M แสดงว่ามีเลเยอร์การกำหนดค่าอื่นมาเขียนทับการแก้ไขของคุณ

6. อัปเดตขีดจำกัด CLI เมื่อ occ หรือ cron ใช้หน่วยความจำน้อยเกินไป

คำเตือนในส่วนผู้ดูแลระบบบนเว็บนั้นเกิดจากการทำงานของเว็บรันไทม์ แต่occการทำงานของ cron job นั้นใช้ PHP CLI เอกสารของ ownCloud ได้ระบุเรื่องนี้ไว้อย่างชัดเจน

แก้ไข:

sudo nano /etc/php/7.4/cli/php.ini

ชุด:

memory_limit = 512M

จากนั้นตรวจสอบ:

php -r 'echo ini_get("memory_limit"), PHP_EOL;'

คุณไม่จำเป็นต้องรีสตาร์ทบริการสำหรับ PHP CLI เพราะการเรียกใช้ CLI แต่ละครั้งจะเริ่มต้นกระบวนการใหม่ แต่ถ้างาน Cron ของคุณเรียกใช้ไบนารี PHP อื่นโดยเฉพาะ โปรดตรวจสอบไบนารีนั้นให้แน่ชัด แทนที่จะสันนิษฐานว่า/usr/bin/phpเป็นไบนารีที่ถูกใช้งานอยู่

ownCloud แนะนำให้ใช้งานoccในฐานะผู้ใช้ HTTP ซึ่งโดยทั่วไปจะใช้www-dataบน Debian/Ubuntu เอกสารอย่างเป็นทางการของ ownCloud เกี่ยวกับ occยังเตือนด้วยว่าoccควรใช้ PHP เวอร์ชันเดียวกันกับเว็บเซิร์ฟเวอร์เมื่อมีการติดตั้งหลายเวอร์ชัน

7. Docker: ให้ใช้ OWNCLOUD_MEMORY_LIMIT แทนการแก้ไขไฟล์ภายในคอนเทนเนอร์

ไฟล์ Docker Compose แสดงให้เห็นว่า OWNCLOUD_MEMORY_LIMIT ถูกตั้งค่าเป็น 512M และคอนเทนเนอร์ ownCloud ถูกสร้างขึ้นใหม่
สำหรับคอนเทนเนอร์ ownCloud อย่างเป็นทางการ ให้ตั้งค่าOWNCLOUD_MEMORY_LIMIT=512Mในสภาพแวดล้อมคอนเทนเนอร์และสร้างบริการใหม่เพื่อให้การกำหนดค่า PHP ที่สร้างขึ้นได้รับการอัปเดต

สำหรับอิมเมจ Docker อย่างเป็นทางการของ ownCloud ให้ใช้ตัวแปรสภาพแวดล้อมตามที่ระบุไว้ในเอกสาร:

environment:
  OWNCLOUD_MEMORY_LIMIT: 512M

จากนั้นสร้างบริการขึ้นมาใหม่:

docker compose up -d

อย่าทำการแก้ไขหลักโดยการแก้ไขphp.iniภายในคอนเทนเนอร์ชั่วคราว การสร้างคอนเทนเนอร์ใหม่จะทำให้การเปลี่ยนแปลงเหล่านั้นหายไป เอกสารอย่างเป็นทางการของ ownCloud Docker environment ได้กำหนดOWNCLOUD_MEMORY_LIMIT=512Mและแนะนำให้คงค่าเริ่มต้นนั้นไว้

หากโฮสต์ Docker มีข้อจำกัดด้านหน่วยความจำที่เข้มงวด ควรตรวจสอบข้อจำกัดของคอนเทนเนอร์ด้วย:

docker stats

ข้อจำกัดของ PHP ที่ 512M ไม่ได้หมายความว่าคอนเทนเนอร์จะมีหน่วยความจำว่าง 512 MB โดยอัตโนมัติ แต่เป็นเพียงการจำกัดปริมาณหน่วยความจำที่คำขอ PHP แต่ละรายการสามารถใช้ได้เท่านั้น คอนเทนเนอร์และโฮสต์ยังคงต้องการหน่วยความจำที่เพียงพอสำหรับ PHP ที่ทำงานพร้อมกันทั้งหมดและบริการอื่นๆ ด้วย

8. เริ่มบริการที่ถูกต้องอีกครั้งและตรวจสอบจากรันไทม์เดียวกัน

กำลังรีสตาร์ท PHP-FPM และ Nginx ในเทอร์มินัล และภาพรวมของ ownCloud แสดงขีดจำกัดหน่วยความจำของ PHP ที่ 512 MB โดยที่การตรวจสอบผ่านหมดแล้ว
การแก้ไขจะเสร็จสมบูรณ์ก็ต่อเมื่อเว็บรันไทม์รายงานว่ามีหน่วยความจำ 512M ขึ้นไป และ ownCloud ไม่แสดงคำเตือนหน่วยความจำเหลือน้อยอีกต่อไป

หลังจากรีสตาร์ทบริการที่เกี่ยวข้องแล้ว ให้ตรวจสอบหน้า phpinfo ชั่วคราวหรือภาพรวมผู้ดูแลระบบ ownCloud อีกครั้ง จากนั้นลบหน้า phpinfo ออก

หากคุณได้แก้ไข PHP-FPM โปรดตรวจสอบ:

sudo systemctl status php7.4-fpm
sudo systemctl status nginx

หากคุณได้เปลี่ยน Apache แล้ว:

sudo systemctl status apache2

รีเฟรชหน้าผู้ดูแลระบบ ownCloud คำเตือนควรหายไปหาก ownCloud ทำงานด้วยขีดจำกัดที่คาดไว้เป็นอย่างน้อยแล้ว

9. ตรวจสอบ RAM ของโฮสต์ก่อนที่จะเพิ่มขีดจำกัด PHP เกิน 512M

เทอร์มินัล Ubuntu แสดงหน่วยความจำว่าง กระบวนการทำงานของ PHP-FPM และรายการบันทึก ownCloud ล่าสุด
หลังจากเพิ่มขีดจำกัดต่อคำขอแล้ว ให้ตรวจสอบหน่วยความจำระบบทั้งหมดและพฤติกรรมของ PHP worker ขีดจำกัด PHP ที่สูงขึ้นอาจทำให้การใช้ RAM ในกรณีที่เลวร้ายที่สุดเพิ่มขึ้นเมื่อมี worker จำนวนมากทำงานอยู่

วิ่ง:

free -h
ps aux | grep php-fpm
vmstat 1

PHP memory_limitกำหนดขีดจำกัดต่อสคริปต์ ไม่ใช่การสำรองหน่วยความจำ และไม่เหมือนกับปริมาณ RAM ที่เซิร์ฟเวอร์ต้องการ หากคุณมี PHP worker 20 ตัว และอนุญาตให้ทุกคำขอใช้หน่วยความจำจำนวนมาก ในกรณีที่เลวร้ายที่สุดตามทฤษฎีแล้ว หน่วยความจำที่ใช้ก็อาจเกิน RAM ของเครื่องไปมาก

เอกสารการปรับแต่งของ ownCloud ให้คำเตือนทั่วไปเดียวกันสำหรับกระบวนการเว็บเซิร์ฟเวอร์: กำหนดขนาดจำนวนกระบวนการเพื่อให้การใช้หน่วยความจำโดยรวมต่ำกว่า RAM ที่มีอยู่ มิฉะนั้นระบบจะเริ่มใช้หน่วยความจำเสมือน (swapping) และประสิทธิภาพจะลดลง ดูคำแนะนำการปรับแต่ง ownCloud Classicเพิ่มเติม

หากสัญญาณเตือน 512M หายไปแล้ว และการทำงานปกติเป็นไปอย่างราบรื่น ก็ไม่มีเหตุผลที่จะต้องเพิ่มขีดจำกัดเพียงเพื่อให้ตัวเลขใหญ่ขึ้น

10. เมื่อตั้งค่าเป็น 512M แล้วยังคงแสดงข้อความ “Allowed memory size exhausted”

การแจ้งเตือนคำแนะนำที่ถูกล้างแล้วและการเกิดข้อผิดพลาดเนื่องจากหน่วยความจำหมดเป็นปัญหาที่แตกต่างกัน หากบันทึกมีข้อความเช่น:

PHP Fatal error: Allowed memory size of ... bytes exhausted

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

ตรวจสอบบันทึกของ ownCloud และบันทึกข้อผิดพลาดของ PHP/เว็บเซิร์ฟเวอร์ การติดตั้ง ownCloud มาตรฐานจะเขียนบันทึกของตัวเองไว้ในไดเร็กทอรีข้อมูลที่กำหนดค่าไว้ ซึ่งโดยทั่วไปคือdata/owncloud.logหลีกเลี่ยงการคิดว่า "เพิ่มเป็น 1G" เป็นขั้นตอนต่อไปโดยอัตโนมัติ ก่อนอื่นให้ตรวจสอบว่าการดำเนินการเดียวกันนั้นทำให้ถึงขีดจำกัดซ้ำๆ หรือไม่

หากงานบริหารจัดการงานใดงานหนึ่งต้องการหน่วยความจำเพิ่มอย่างถูกต้อง การกำหนดค่าผ่าน CLI แบบเจาะจงอาจปลอดภัยกว่าการกำหนดขีดจำกัดขนาดใหญ่ให้กับทุกคำขอเว็บทั่วโลก:

php -d memory_limit=1G occ <command>

ใช้คำสั่งนี้เฉพาะเมื่อเข้าใจพฤติกรรมของคำสั่งและหน่วยความจำแล้วเท่านั้น คำสั่งนี้ไม่สามารถแก้ไขปัญหาการร้องขอเว็บที่ทำงานผ่าน PHP-FPM หรือ Apache ได้

เหตุใดคำเตือนจึงยังคงปรากฏอยู่หลังจากแก้ไขไฟล์ php.ini แล้ว

อาการสาเหตุที่เป็นไปได้ตรวจสอบครั้งต่อไป
php -rแสดงค่า 512M แต่ ownCloud ยังคงแสดงค่า 128Mคุณเปลี่ยนเฉพาะ CLI PHP เท่านั้นตรวจสอบข้อมูล phpinfo ของเบราว์เซอร์และไฟล์การกำหนดค่าที่โหลดไว้
ไฟล์ FPM ระบุว่า 512M แต่เบราว์เซอร์ยังแสดง 128MPool .user.iniหรือไฟล์ INI อื่นๆ จะเขียนทับค่านี้ตรวจสอบค่า "local" และ "master" ของ phpinfo และไฟล์ INI ที่ถูกแยกวิเคราะห์เพิ่มเติม
ค่าจะเปลี่ยนแปลงหลังจากรีบูตเท่านั้นบริการที่ถูกต้องไม่ได้เริ่มต้นใหม่หลังจากแก้ไขเสร็จแล้ว ให้รีสตาร์ท PHP-FPM หรือ Apache อย่างชัดเจน
ค่า Docker จะกลับไปเป็นการตั้งค่าเดิมหลังจากสร้างใหม่คุณแก้ไขภายในคอนเทนเนอร์ตั้งค่าOWNCLOUD_MEMORY_LIMITใน Compose หรือสภาพแวดล้อมการปรับใช้
คำเตือนหายไป แต่เซิร์ฟเวอร์เริ่มทำการสลับข้อมูลการทำงานพร้อมกันของ PHP เกินขีดจำกัดหน่วยความจำของโฮสต์ลดจำนวนพนักงาน ปรับปรุงประสิทธิภาพการทำงาน หรือเพิ่ม RAM

อย่าสับสนระหว่าง memory_limit กับ upload limits

memory_limitและแก้ไขปัญหาต่างๆ การเพิ่มหน่วยความจำ PHP ไม่ได้หมายความว่าผู้ใช้สามารถอัปโหลดไฟล์ขนาดใหญ่ขึ้นได้โดยอัตโนมัติ บันทึกการกำหนดค่า ownCloud 10.16 ระบุแยกต่างหากว่าupload_max_filesizeควรตั้งค่าอย่างน้อย 512 MB สำหรับค่าต่ำสุดที่ระบุไว้ และอธิบายว่าขีดจำกัดการอัปโหลดจำเป็นต้องมีการตั้งค่าเฉพาะของตนเองpost_max_sizepost_max_size

หากอาการที่เกิดขึ้นจริงคือ “การอัปโหลดไฟล์ขนาดใหญ่ล้มเหลว” ให้ตรวจสอบupload_max_filesizeขีดpost_max_sizeจำกัดขนาดไฟล์ของพร็อกซี/เว็บเซิร์ฟเวอร์, เวลาหมดอายุ และความจุของดิสก์ชั่วคราว อย่าใช้ค่าที่สูงกว่าmemory_limitมาทดแทนการควบคุมเหล่านั้น

รายการตรวจสอบขั้นสุดท้าย

  • ตรวจสอบคำเตือนและค่าปัจจุบันใน ownCloud
  • ตรวจสอบว่า ownCloud ใช้ Apache mod_php หรือ PHP-FPM
  • ค้นหาไฟล์การกำหนดค่าที่โหลดแล้วของเว็บ รันไทม์
  • ตั้งค่า PHP สำหรับเว็บmemory_limitเป็นอย่างน้อย512M.
  • อัปเดต CLI PHP ด้วย หากocccron ใช้ขีดจำกัดที่ต่ำกว่า
  • สำหรับ Docker ให้ตั้งค่าOWNCLOUD_MEMORY_LIMIT=512Mในสภาพแวดล้อมการปรับใช้
  • รีสตาร์ทหรือสร้างบริการที่ให้บริการ PHP ขึ้นใหม่
  • ตรวจสอบค่าจากสภาพแวดล้อมการทำงานของเว็บ ไม่ใช่แค่จากบรรทัดคำสั่ง (CLI) เท่านั้น
  • ตรวจสอบว่าคำเตือนของ ownCloud หายไปแล้ว
  • ตรวจสอบ RAM และ swap ของโฮสต์ก่อนที่จะเพิ่มขีดจำกัดเกิน 512M

สรุปแล้ว

วิธีแก้ไขปัญหา “PHP memory limit below recommended value” ใน ownCloud 10 อย่างได้ผล คือ การตั้งค่า PHP runtime ที่ให้บริการ ownCloud ให้ใช้หน่วยความจำอย่างน้อย 512 MB ขึ้นไป จากนั้นตรวจสอบผลลัพธ์จาก runtime เดียวกัน สาเหตุที่พบบ่อยที่สุดคือ การแก้ไขไฟล์การกำหนดค่า/etc/php/.../cli/php.iniขณะที่ ownCloud กำลังทำงานผ่าน PHP-FPM หรือ Apache โดยใช้ไฟล์การกำหนดค่าที่แตกต่างกัน

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

ฝากความเห็น

10 เครื่องมือ Ping Sweep ที่ดีที่สุดสำหรับการค้นหาอุปกรณ์ในเครือข่ายของคุณ

10 เครื่องมือ Ping Sweep ที่ดีที่สุดสำหรับการค้นหาอุปกรณ์ในเครือข่ายของคุณ

เปรียบเทียบเครื่องมือสแกน Ping 10 ตัว สำหรับการค้นหาเครือข่าย LAN อย่างรวดเร็ว การสแกนข้ามแพลตฟอร์ม และการจัดการที่อยู่ IP เรียนรู้ว่าการสแกน Ping สามารถบอกอะไรคุณได้บ้าง และบอกอะไรไม่ได้บ้าง

6 เครื่องมือบริหารจัดการเครือข่ายที่ดีที่สุดสำหรับการติดตามประสิทธิภาพ

6 เครื่องมือบริหารจัดการเครือข่ายที่ดีที่สุดสำหรับการติดตามประสิทธิภาพ

เปรียบเทียบเครื่องมือบริหารจัดการเครือข่าย 6 ชนิดสำหรับการตรวจสอบประสิทธิภาพ รวมถึงการครอบคลุมของ SNMP, การทำแผนที่, การแจ้งเตือน, รูปแบบการใช้งาน และข้อดีข้อเสียด้านต้นทุน

โปรแกรมวิเคราะห์ Wi-Fi ที่ดีที่สุดสำหรับ Windows, iOS และ Android

โปรแกรมวิเคราะห์ Wi-Fi ที่ดีที่สุดสำหรับ Windows, iOS และ Android

เปรียบเทียบแอปวิเคราะห์ Wi-Fi สำหรับ Windows, iPhone และ Android ซึ่งรวมถึงเครื่องมือสำหรับตรวจสอบความแออัดของช่องสัญญาณ การครอบคลุมสัญญาณ แผนที่ความร้อน และการแก้ไขปัญหาเครือข่าย

Ping Monitor: 7 เครื่องมือโอเพนซอร์สฟรีสำหรับตรวจสอบความพร้อมใช้งานของเครือข่าย

Ping Monitor: 7 เครื่องมือโอเพนซอร์สฟรีสำหรับตรวจสอบความพร้อมใช้งานของเครือข่าย

เปรียบเทียบโปรแกรมตรวจสอบค่า Ping แบบโอเพนซอร์สฟรี 7 ตัว ตั้งแต่ชุดโปรแกรมเครือข่ายแบบครบวงจรไปจนถึงโปรแกรมตรวจสอบความหน่วงแฝงโดยเฉพาะ และเลือกโปรแกรมที่เหมาะสมที่สุดตามความพร้อมใช้งาน การสูญเสียแพ็กเก็ต และประวัติการใช้งาน

QoS ในระบบเครือข่าย: คุณภาพของบริการ (Quality of Service) ทำอะไร และทำงานอย่างไร

QoS ในระบบเครือข่าย: คุณภาพของบริการ (Quality of Service) ทำอะไร และทำงานอย่างไร

เรียนรู้ความหมายของ QoS ในระบบเครือข่าย วิธีที่การกำหนดค่า DSCP และคิวการรับส่งข้อมูลจัดลำดับความสำคัญของเสียง วิดีโอ และแอปพลิเคชันทางธุรกิจ และสิ่งที่ QoS แก้ไขไม่ได้

7 เครื่องมือจัดการที่อยู่ IP ที่ดีที่สุดสำหรับทีมเครือข่าย

7 เครื่องมือจัดการที่อยู่ IP ที่ดีที่สุดสำหรับทีมเครือข่าย

เปรียบเทียบเครื่องมือจัดการที่อยู่ IP เจ็ดแบบ สำหรับการค้นหาซับเน็ต การประสานงาน DNS และ DHCP การสำรวจเครือข่าย และ IPAM แบบโอเพนซอร์ส

แนวทางปฏิบัติที่ดีที่สุดสำหรับการตรวจสอบเครือข่าย: สิ่งที่ควรติดตามและเครื่องมือที่ควรใช้งาน

แนวทางปฏิบัติที่ดีที่สุดสำหรับการตรวจสอบเครือข่าย: สิ่งที่ควรติดตามและเครื่องมือที่ควรใช้งาน

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

10 เครื่องมือสแกนเครือข่ายที่ดีที่สุดสำหรับการค้นหาอุปกรณ์และที่อยู่ IP

10 เครื่องมือสแกนเครือข่ายที่ดีที่สุดสำหรับการค้นหาอุปกรณ์และที่อยู่ IP

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

วิธีใช้ Nmap สำหรับ Traceroute และอ่านเส้นทางเครือข่าย

วิธีใช้ Nmap สำหรับ Traceroute และอ่านเส้นทางเครือข่าย

ใช้ตัวเลือก --traceroute ของ Nmap เพื่อแมปฮอปไปยังโฮสต์ที่ได้รับอนุญาต ทำความเข้าใจเอาต์พุตของฮอปและ RTT และแก้ไขปัญหาการตอบสนองที่หายไปโดยไม่ต้องสแกนมากเกินไป

10 เครื่องมือสแกนและวิเคราะห์ไร้สายที่ดีที่สุดสำหรับ Windows, iOS และ Android

10 เครื่องมือสแกนและวิเคราะห์ไร้สายที่ดีที่สุดสำหรับ Windows, iOS และ Android

เปรียบเทียบเครื่องมือสแกนและวิเคราะห์เครือข่ายไร้สาย 10 รายการสำหรับ Windows, iOS และ Android พร้อมคำอธิบายที่ชัดเจนเกี่ยวกับช่องสัญญาณ Wi-Fi แผนที่ครอบคลุม การตรวจสอบ LAN และข้อจำกัดของแต่ละแพลตฟอร์ม