แก้ไขคำเตือนเรื่องข้อจำกัดหน่วยความจำ PHP ของ Nextcloud

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

เลือกวิธีการที่ตรงกับการใช้งานของคุณ: Apache พร้อม mod_php, Apache หรือ Nginx พร้อม PHP-FPM, คอนเทนเนอร์ หรือแพ็กเกจ Nextcloud ที่จัดการโดยผู้ให้บริการ อย่าแก้ไขค่า random ของโฮสต์php.iniและคิดว่าทุกการใช้งานใช้ค่าเดียวกัน ตรวจสอบผลลัพธ์จากหน้าภาพรวมผู้ดูแลระบบของ Nextcloud ซึ่งจะแสดงการกำหนดค่าเว็บแอปพลิเคชัน

คำเตือนนี้หมายความว่าอย่างไร?

ค่า PHP's นี้memory_limitคือหน่วยความจำสูงสุดที่สคริปต์ PHP เดียวสามารถจัดสรรได้ ไม่ใช่ RAM ทั้งหมดที่สงวนไว้สำหรับ Nextcloud และไม่ได้เพิ่มหน่วยความจำทางกายภาพที่มีให้เซิร์ฟเวอร์ คู่มือของ Nextcloud ระบุว่าควรตั้งค่าอย่างน้อย 512 MB สำหรับคำสั่งนี้ นอกจากนี้ ข้อกำหนดของระบบยังอธิบายว่าความต้องการหน่วยความจำของเซิร์ฟเวอร์จริงจะแตกต่างกันไปตามผู้ใช้ แอป ไฟล์ และกิจกรรมต่างๆ พวกเขาแนะนำให้ใช้ RAM อย่างน้อย 512 MB ต่อกระบวนการ PHP โดยมี 128 MB เป็นค่าต่ำสุด

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

คุณควรแก้ไขการตั้งค่า PHP ส่วนใด

ขั้นแรก ให้ตรวจสอบว่า PHP รัน Nextcloud อย่างไร การตรวจสอบผ่านเทอร์มินัล เช่น จะphp --iniแสดงการกำหนดค่าบรรทัดคำสั่ง (CLI) การร้องขอเว็บของ Nextcloud อาจใช้โมดูล Apache แยกต่างหาก หรือบริการ PHP-FPM ที่มีการphp.iniแทนที่พูลหรือพูลอื่น Nextcloud ระบุไว้อย่างชัดเจนว่า PHP สำหรับเว็บและ CLI อาจใช้ไฟล์การกำหนดค่าที่แตกต่างกัน

โดยทั่วไปแล้ว ในระบบที่พัฒนามาจาก Debian /etc/php/8.x/apache2/php.iniไฟล์ PHP จะอยู่ในโฟลเดอร์ `/etc/php /etc/php/8.x/fpm/php.ini/php/php-FPM` เวอร์ชัน PHP และชื่อโฟลเดอร์อาจแตกต่างกันไป ระบบปฏิบัติการอื่นๆ มักใช้เส้นทางที่แตกต่างกัน เช่น โฟลเดอร์ที่ใช้ร่วมกัน/etc/php.iniโปรดใช้ข้อมูลเหล่านี้เป็นเพียงตัวอย่างเท่านั้น ควรใช้ตัวจัดการแพ็กเกจ การกำหนดค่าบริการ และรันไทม์ PHP เพื่อค้นหาไฟล์ที่ใช้งานอยู่จริง

หากต้องการตรวจสอบการตั้งค่า CLI ให้รันคำสั่ง:

php --ini
php -i | grep -i '^memory_limit'

คำสั่งเหล่านี้มีประโยชน์สำหรับงานที่กำหนดเวลาไว้ซึ่งเรียกใช้ PHP จากบรรทัดคำสั่ง แต่ไม่ได้พิสูจน์ว่ากระบวนการ Nextcloud ที่แสดงผลบนเบราว์เซอร์ใช้ค่าเดียวกัน หลีกเลี่ยงการสร้างphpinfo()หน้าเว็บสาธารณะบนเซิร์ฟเวอร์ เพราะอาจเปิดเผยเส้นทาง โมดูล และรายละเอียดการทำงานของโปรแกรมได้

จะตั้งค่าขีดจำกัดสำหรับ Apache หรือ PHP-FPM อย่างไร?

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

memory_limit = 512M

ควรใช้การตั้งค่าที่ใช้งานอยู่เพียงครั้งเดียว แทนที่จะเพิ่มบรรทัดซ้ำซ้อนที่ส่วนท้ายของไฟล์หลายไฟล์ พูล PHP-FPM ยังสามารถกำหนดค่าสำหรับเวิร์กเกอร์ได้ ดังนั้นควรตรวจสอบการกำหนดค่าพูลหากค่าที่กำหนดphp.iniไม่มีผล บางการใช้งาน PHP รองรับการตั้งค่าต่อไดเร็กทอรี.user.iniการใช้งานหรือไม่นั้นขึ้นอยู่กับการกำหนดค่าเซิร์ฟเวอร์และควรตรวจสอบกับผู้ดูแลระบบ

Apache ใช้ mod_php

แก้ไขไฟล์php.iniที่ Apache ใช้ บันทึก แล้วรีสตาร์ท Apache เพื่อให้โมดูลโหลดการตั้งค่าใหม่ ชื่อบริการอาจแตกต่างกันไป ในระบบ Debian หรือ Ubuntu ชื่อบริการมักจะเป็นapache2; ในระบบตระกูล RHEL ชื่อบริการมักจะเป็นhttpdใช้ชื่อบริการให้ตรงกับระบบปฏิบัติการและขั้นตอนการบำรุงรักษาของคุณ

sudo systemctl restart apache2

แทนที่apache2หากการแจกจ่ายของคุณใช้ชื่อหน่วยที่แตกต่างกัน หาก Nextcloud ให้บริการผ่าน PHP-FPM แทน mod_php การรีสตาร์ท Apache เพียงอย่างเดียวจะไม่โหลดเวิร์กเกอร์ PHP ใหม่

Apache หรือ Nginx ที่ใช้ PHP-FPM

แก้ไขการตั้งค่า PHP-FPM ที่เว็บไซต์ใช้งานจริง หลังจากบันทึกการเปลี่ยนแปลงแล้ว ให้รีสตาร์ทหรือโหลดบริการ PHP-FPM ที่เกี่ยวข้องใหม่ หน่วยของการตั้งค่าอาจรวมถึงเวอร์ชัน PHP เช่นphp8.3-fpmหรืออาจใช้ชื่อเฉพาะของผู้จำหน่ายรายอื่น

sudo systemctl restart php8.3-fpm

ใช้ชื่อบริการที่ถูกต้องสำหรับเวอร์ชัน PHP ที่ติดตั้งไว้ Nginx จะส่งคำขอ PHP ไปยัง FPM ดังนั้นการเปลี่ยนแปลงการตั้งค่า PHP มักจะต้องใช้การเปลี่ยนแปลงกับ FPM ด้วย การรีสตาร์ท Nginx เพียงอย่างเดียวจะไม่โหลดขีดจำกัดหน่วยความจำของ PHP ใหม่ หากการกำหนดค่าพูล PHP-FPM ของคุณเขียนทับmemory_limitให้ปรับการตั้งค่าพูลหรือลบการเขียนทับออก จากนั้นรีสตาร์ทพูล

แล้วถ้า Nextcloud ทำงานบน Docker, AIO, Snap หรือแพ็กเกจอื่นๆ ล่ะ?

ใช้กลไกการกำหนดค่าสำหรับวิธีการติดตั้งนั้น การแก้ไขไฟล์ PHP ของโฮสต์โดยทั่วไปจะไม่เปลี่ยนแปลงรันไทม์ PHP ภายในคอนเทนเนอร์หรือแพ็กเกจแยกต่างหาก เอกสารอิมเมจ Docker อย่างเป็นทางการของ Nextcloud ได้ระบุPHP_MEMORY_LIMITตัวแปรสภาพแวดล้อมไว้ โดยมีค่าเริ่มต้นอยู่512Mในเอกสารอิมเมจปัจจุบัน ตั้งค่าตัวแปรนี้ในไฟล์ Compose หรือการกำหนดค่าคอนเทนเนอร์ จากนั้นสร้างใหม่หรือรีสตาร์ทคอนเทนเนอร์แอปพลิเคชันตามขั้นตอนการปรับใช้

environment:
  PHP_MEMORY_LIMIT: 512M

อย่าคัดลอกการตั้งค่าดังกล่าวไปยังการติดตั้งทุกประเภท คู่มือ Nextcloud ระบุว่าสภาพแวดล้อมแบบสำเร็จรูป เช่น AIO, Snap, NCP และ Community Docker มี PHP ที่กำหนดค่าไว้ล่วงหน้า และแนะนำให้ผู้ดูแลระบบดูคำแนะนำเฉพาะแพ็กเกจสำหรับการปรับแต่ง สำหรับการตั้งค่าเหล่านั้น ให้ใช้ส่วนติดต่อผู้ใช้หรือเอกสารประกอบที่รองรับสำหรับแพ็กเกจนั้น การเมานต์วอลุ่มแบบถาวรและการกำหนดค่าที่สร้างขึ้นอาจแทนที่การแก้ไขด้วยตนเองเพียงครั้งเดียวได้

คุณจะยืนยันได้อย่างไรว่าปัญหาคำเตือนได้รับการแก้ไขแล้ว?

  1. ทำการเปลี่ยนแปลงกับไฟล์การตั้งค่า PHP ที่เชื่อมต่อกับเว็บ แล้วรีสตาร์ทหรือโหลดบริการเว็บ/PHP ที่เกี่ยวข้องใหม่
  2. ลงชื่อเข้าใช้ Nextcloud ในฐานะผู้ดูแลระบบ แล้วเปิดการตั้งค่า > การจัดการ > ภาพรวม
  3. รีเฟรชหน้าเว็บและตรวจสอบคำเตือนเกี่ยวกับการตั้งค่าอีกครั้ง ยืนยันว่าคำเตือนเกี่ยวกับข้อจำกัดด้านหน่วยความจำของ PHP หายไปแล้ว
  4. เรียกใช้งานการทำงานที่เคยทำให้เกิดคำเตือนมาก่อน เช่น งานของแอปที่ได้รับผลกระทบ และตรวจสอบบันทึกของ Nextcloud และ PHP เพื่อหาข้อความเกี่ยวกับการใช้หน่วยความจำมากเกินไป

หากคุณเรียกใช้งาน Nextcloud ในพื้นหลังผ่าน cron ของระบบด้วย ให้ตรวจสอบการตั้งค่า PHP ของ CLI แยกต่างหาก คำเตือนที่แสดงบนเว็บอาจถูกล้างออกได้ในขณะที่งาน CLI ยังคงใช้ขีดจำกัดที่ต่ำกว่า ยืนยันค่า CLI ด้วยคำสั่ง `npm run build` php --iniและphp -i`npm run build` สำหรับไบนารี PHP เดียวกันกับที่ใช้โดยคำสั่ง cron

คุณควรเพิ่มมูลค่าให้สูงกว่า 512 ล้านเหรียญสหรัฐเมื่อใด?

ควรเพิ่มขีดจำกัดก็ต่อเมื่อคำเตือนหายไปแล้ว แต่ปริมาณงานที่บันทึกไว้ยังคงถึงขีดจำกัดของ PHP หรือเมื่อคำแนะนำที่รองรับของแอปพลิเคชันระบุให้เพิ่มมากกว่านั้น ตรวจสอบหน่วยความจำเซิร์ฟเวอร์จริง จำนวนเวิร์กเกอร์ PHP-FPM หน่วยความจำฐานข้อมูล และบริการอื่นๆ ก่อน เนื่องจาก PHP ใช้ขีดจำกัดต่อสคริปต์ ดังนั้นเวิร์กเกอร์หลายตัวที่ทำงานหนักอาจใช้หน่วยความจำจำนวนมากพร้อมกันได้ กำหนดขีดจำกัดที่วัดได้ซึ่งเหมาะสมกับงบประมาณหน่วยความจำของโฮสต์ แทนที่จะใช้-1ซึ่ง PHP ระบุไว้ว่าไม่มีขีดจำกัดหน่วยความจำ

หากคำเตือนหายไปแล้ว แต่เซิร์ฟเวอร์ยังคงทำงานช้าลงหรือกระบวนการทำงานถูกปิด ให้ตรวจสอบการใช้งานหน่วยความจำและพื้นที่สวอปของระบบ บันทึก PHP-FPM และบันทึก Nextcloud พิจารณาว่าแอปพลิเคชันหรือคำขอใดใช้หน่วยความจำมากเกินไปหรือไม่ แคชหน่วยความจำ เช่น APCu หรือ Redis ช่วยแก้ปัญหาเรื่องแคชและประสิทธิภาพ แต่ไม่ใช่สิ่งที่จะมาทดแทนการตั้งค่า PHP ได้memory_limitควรเปลี่ยนทีละปัจจัยเพื่อตรวจสอบว่าผลลัพธ์ดีขึ้นหรือไม่

ตรวจสอบอาการเบื้องต้นอย่างรวดเร็ว

  • ข้อความเตือนยังคงปรากฏหลังจากแก้ไขไฟล์ php.ini:ตรวจสอบว่าคุณแก้ไขไฟล์ CLI แทนไฟล์ของ Apache/FPM หรือว่าการตั้งค่าพูลมีผลเหนือกว่าการตั้งค่านี้
  • ข้อความเตือนหายไปแล้ว แต่การทำงานของ cron ยังคงล้มเหลว:โปรดตรวจสอบไบนารี PHP ของ CLI และการกำหนดค่าแยกต่างหาก
  • เว็บเซิร์ฟเวอร์แสดงข้อผิดพลาดหลังจากรีสตาร์ท:โปรดตรวจสอบสถานะและบันทึกของเว็บเซิร์ฟเวอร์หรือบริการ PHP-FPM และกู้คืนข้อมูลสำรองหากการเปลี่ยนแปลงการกำหนดค่าทำให้การเริ่มต้นล้มเหลว
  • คำเตือนหายไปแล้ว แต่โฮสต์มี RAM ไม่เพียงพอ:ลดจำนวนการทำงานพร้อมกัน เพิ่มหน่วยความจำ หรือระบุโปรเซสที่ใช้หน่วยความจำก่อนที่จะเพิ่มขีดจำกัด PHP ต่อไปอีก
  • หากคุณใช้คอนเทนเนอร์หรือแพ็กเกจสำเร็จรูปให้เปลี่ยนการตั้งค่า PHP ที่รองรับในแพ็กเกจนั้น แทนที่จะเปลี่ยนในไฟล์ php.ini ของโฮสต์

เอกสารอ้างอิงอย่างเป็นทางการ

ฝากความเห็น

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 และข้อจำกัดของแต่ละแพลตฟอร์ม