ศูนย์คู่มือ Ruk-Com PaaS

คู่มือการพัฒนา Deploy และดูแล Application บนแพลตฟอร์ม

RUK-COM PAAS / APPLICATION SETTINGS

คู่มือ Memory Leak Processes สำหรับ การตั้งค่า Application

คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี

ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง

คู่มือภาษาไทย

คำสั่ง ชื่อเมนู พารามิเตอร์ และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง

ให้ความสนใจเป็นพิเศษกับกระบวนการในกลุ่มนี้เกี่ยวกับสาเหตุที่น่าจะเป็นไปได้มากที่สุดของปัญหาหน่วยความจำไม่เพียงพอ (จัดเรียงตามบทบาทของเซิร์ฟเวอร์):

โหลดบาลานเซอร์

คำแนะนำทั่วไป

จัดสรร RAM ให้กับ Node ที่เกี่ยวข้องมากขึ้น - บริการที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มขึ้นสำหรับการทำงานตามปกติ

กระบวนการ ปณิธาน
วานิช จัดสรร RAM ให้กับ Node มากขึ้น - บริการที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มขึ้นสำหรับการทำงานตามปกติ

แอปพลิเคชันเซิร์ฟเวอร์

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

  • ชวา

คำแนะนำทั่วไป

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

ชวา -Xmx2048m -Xms256m

ที่ไหน

*   _**Xmx**_ flag specifies the maximum heap memory that could be allocated for a Java Virtual Machine (JVM)
*   _**Xms**_ flag defines initial memory allocation pool

โปรดดูเอกสารอย่างเป็นทางการสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการจัดการหน่วยความจำจาวาระบบ.

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

นอกจากนี้ให้พิจารณาด้วยว่า JVM ต้องการหน่วยความจำมากกว่าแค่ฮีป - อ่านผ่านโครงสร้างหน่วยความจำ JVMการอ้างอิงเพื่อรับข้อมูลเชิงลึก

กระบวนการ ปณิธาน
ชวา ตรวจสอบxmx,xms,xmnพารามิเตอร์ของเครื่อง Java ของคุณและกำหนดค่าตามความต้องการแอปพลิเคชันของคุณ
  • PHP

คำแนะนำทั่วไป

  1. หากปัญหาเกิดขึ้นกับhttpd(httpd.itk) ให้ปรับพารามิเตอร์การจัดการหน่วยความจำของเซิร์ฟเวอร์ดังต่อไปนี้:

    • ตรวจสอบจำนวน RAM เฉลี่ยที่แต่ละตัวใช้httpdตัวอย่าง
    • ลบเครื่องหมายกำหนดค่าอัตโนมัติ Ruk-Com PaaSภายใน/etc/httpd/httpd.confไฟล์
    • ลดเซิร์ฟเวอร์จำกัดและMaxClientsค่าตามสูตร:(Total_RAM - 5%) / Average_RAM

บันทึก:ในกรณีที่คุณสังเกตเห็นการเติบโตอย่างต่อเนื่องของการใช้หน่วยความจำต่ออินสแตนซ์ (การรั่วไหล) คุณจะต้องลดMaxRequestsPerChildมูลค่า (ประมาณ 1,000-5,000)

  1. สำหรับnginxเชื่อมต่อกับคอนเทนเนอร์ของคุณผ่าน SSH และตรวจสอบขนาดของphp-fpm.phpอินสแตนซ์ (เช่น withปลหรือสูงสุดเครื่องมือ):

    • หากทั้งหมดใช้ RAM ~ 50-100Mb ให้ปิดการใช้งานการกำหนดค่าอัตโนมัติและลดmax_childrenพารามิเตอร์
    • หากขนาดอินสแตนซ์แตกต่างกันมากหรือเกิน 200-300Mb กระบวนการนั้นอาจมีการรั่วไหล - ตรวจสอบและเพิ่มประสิทธิภาพโค้ดของคุณหรือปิดใช้การกำหนดค่าอัตโนมัติและลดmax_requests_per_childพารามิเตอร์
กระบวนการ ปณิธาน
httpd 1. ตรวจสอบจำนวน RAM โดยเฉลี่ยที่แต่ละตัวใช้httpdตัวอย่างที่ 2 ลบเครื่องหมายกำหนดค่าอัตโนมัติ Ruk-Com PaaSภายใน/etc/httpd/httpd.confไฟล์ 3 ลดลงเซิร์ฟเวอร์จำกัดและMaxClientsค่าตามสูตร:(Total_RAM - 5%) / Average_RAM
lsyncd จัดสรร RAM ให้กับ Node มากขึ้น - บริการที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มขึ้นสำหรับการทำงานตามปกติ
httpd.itk 1. ตรวจสอบจำนวน RAM โดยเฉลี่ยที่แต่ละตัวใช้httpdตัวอย่างที่ 2 ลบเครื่องหมายกำหนดค่าอัตโนมัติ Ruk-Com PaaSภายใน/etc/httpd/httpd.confไฟล์ 3 ลดลงเซิร์ฟเวอร์จำกัดและMaxClientsค่าตามสูตร:(Total_RAM - 5%) / Average_RAM
nginx ปิดการใช้งานการกำหนดค่าอัตโนมัติของ Ruk-Com PaaSและปรับพารามิเตอร์ที่เหมาะสมตามลักษณะการใช้งานของคุณ
PHP ปิดการใช้งานการกำหนดค่าอัตโนมัติของ Ruk-Com PaaSและปรับพารามิเตอร์ที่เหมาะสมตามลักษณะการใช้งานของคุณ
php-fpm.php ปิดการใช้งานการกำหนดค่าอัตโนมัติของ Ruk-Com PaaSและปรับพารามิเตอร์ที่เหมาะสมตามลักษณะการใช้งานของคุณ
php-fpm7.0 ปิดการใช้งานการกำหนดค่าอัตโนมัติของ Ruk-Com PaaSและปรับพารามิเตอร์ที่เหมาะสมตามลักษณะการใช้งานของคุณ
php7.0 ปิดการใช้งานการกำหนดค่าอัตโนมัติของ Ruk-Com PaaSและปรับพารามิเตอร์ที่เหมาะสมตามลักษณะการใช้งานของคุณ
  • Ruby#### คำแนะนำทั่วไป

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

กระบวนการ ปณิธาน
httpd 1. ตรวจสอบจำนวน RAM โดยเฉลี่ยที่แต่ละตัวใช้httpdตัวอย่างที่ 2 ลบเครื่องหมายกำหนดค่าอัตโนมัติ Ruk-Com PaaSภายใน/etc/httpd/httpd.confไฟล์ 3 ลดลงเซิร์ฟเวอร์จำกัดและMaxClientsค่าตามสูตร:(Total_RAM - 5%) / Average_RAM
httpd.itk 1. ตรวจสอบจำนวน RAM โดยเฉลี่ยที่แต่ละตัวใช้httpdตัวอย่างที่ 2 ลบเครื่องหมายกำหนดค่าอัตโนมัติ Ruk-Com PaaSภายใน/etc/httpd/httpd.confไฟล์ 3 ลดลงเซิร์ฟเวอร์จำกัดและMaxClientsค่าตามสูตร:(Total_RAM - 5%) / Average_RAM
มัด จัดสรร RAM ให้กับ Node มากขึ้น - บริการที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มขึ้นสำหรับการทำงานตามปกติ
อัญมณี จัดสรร RAM ให้กับ Node มากขึ้น - บริการที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มขึ้นสำหรับการทำงานตามปกติ
ทับทิม พิจารณาตรวจสอบและเพิ่มประสิทธิภาพโค้ดของคุณหรือเพิ่ม RAM ให้กับ Node
*
หลาม

คำแนะนำทั่วไป

  1. หากปัญหาเกิดขึ้นกับhttpd(httpd.itk) ให้ปรับพารามิเตอร์การจัดการหน่วยความจำของเซิร์ฟเวอร์ดังต่อไปนี้:

    • ตรวจสอบจำนวน RAM เฉลี่ยที่แต่ละตัวใช้httpdตัวอย่าง
    • ลบเครื่องหมายกำหนดค่าอัตโนมัติ Ruk-Com PaaSภายใน/etc/httpd/httpd.confไฟล์
    • ลดเซิร์ฟเวอร์จำกัดและMaxClientsค่าตามสูตร:(Total_RAM - 5%) / Average_RAM

บันทึก:ในกรณีที่คุณสังเกตเห็นการเติบโตอย่างต่อเนื่องของการใช้หน่วยความจำต่ออินสแตนซ์ (รั่วไหล) ให้ลดลงMaxRequestsPerChildมูลค่า (ประมาณ 1,000-5,000)

  1. มิฉะนั้นให้จัดสรร RAM ให้กับ Node มากขึ้น - กระบวนการ Python หลักอาจต้องการหน่วยความจำเพิ่มเติมสำหรับการใช้งานตามปกติ
กระบวนการ ปณิธาน
httpd 1. ตรวจสอบจำนวน RAM โดยเฉลี่ยที่แต่ละตัวใช้httpdตัวอย่างที่ 2 ลบเครื่องหมายกำหนดค่าอัตโนมัติ Ruk-Com PaaSภายใน/etc/httpd/httpd.confไฟล์ 3 ลดลงเซิร์ฟเวอร์จำกัดและMaxClientsค่าตามสูตร:(Total_RAM - 5%) / Average_RAM
lsyncd การจัดสรร RAM ให้กับ Node มากขึ้น - แอปพลิเคชันที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มเติมสำหรับการใช้งานตามปกติ
httpd.itk 1. ตรวจสอบจำนวน RAM โดยเฉลี่ยที่แต่ละตัวใช้httpdตัวอย่างที่ 2 ลบเครื่องหมายกำหนดค่าอัตโนมัติ Ruk-Com PaaSภายใน/etc/httpd/httpd.confไฟล์ 3 ลดลงเซิร์ฟเวอร์จำกัดและMaxClientsค่าตามสูตร:(Total_RAM - 5%) / Average_RAM
ปิ๊ป อาจเกิดจากปัญหาเครือข่าย (เพื่อให้กระบวนการดาวน์โหลดค้าง) มิฉะนั้นให้จัดสรร RAM เพิ่มให้กับแอปพลิเคชันที่จัดการ Node อาจต้องการหน่วยความจำเพิ่มเติมสำหรับการใช้งานปกติ
หลาม การจัดสรร RAM ให้กับ Node มากขึ้น - แอปพลิเคชันที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มเติมสำหรับการใช้งานตามปกติ
หลาม 2.7 การจัดสรร RAM ให้กับ Node มากขึ้น - แอปพลิเคชันที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มเติมสำหรับการใช้งานตามปกติ
  • NodeJS#### คำแนะนำทั่วไป

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

กระบวนการ ปณิธาน
lsyncd การจัดสรร RAM ให้กับ Node มากขึ้น - แอปพลิเคชันที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มเติมสำหรับการใช้งานตามปกติ
เสียงฮึดฮัด การจัดสรร RAM ให้กับ Node มากขึ้น - แอปพลิเคชันที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มเติมสำหรับการใช้งานตามปกติ
Node การจัดสรร RAM ให้กับ Node มากขึ้น - แอปพลิเคชันที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มเติมสำหรับการใช้งานตามปกติ
เวลา 22.00 น การจัดสรร RAM ให้กับ Node มากขึ้น - แอปพลิเคชันที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มเติมสำหรับการใช้งานตามปกติ
phantomjs การจัดสรร RAM ให้กับ Node มากขึ้น - แอปพลิเคชันที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มเติมสำหรับการใช้งานตามปกติ

เซิร์ฟเวอร์ฐานข้อมูล

คลิกที่สแต็ก DB ที่ต้องการภายในรายการด้านล่างเพื่อดูคำแนะนำทั่วไปที่เหมาะสมในการจัดการกับปัญหา OOM รวมถึงวิธีแก้ไขสำหรับกระบวนการที่ถูกฆ่าโดยเฉพาะ:

  • MySQL#### คำแนะนำทั่วไป
  1. หากใช้อินโนดีบีengine (ฝังตั้งแต่เวอร์ชัน 5.5 MySQL) ตรวจสอบขนาดบัฟเฟอร์ด้วยคำสั่งถัดไป:

แสดงสถานะเครื่องยนต์ INNODB\G;

ในกรณีที่มีค่าบัฟเฟอร์สูง (มากกว่า 80% ของ RAM คอนเทนเนอร์ทั้งหมด) ให้ลดขนาดของพูลที่อนุญาตด้วยinnodb_buffer_pool_sizeพารามิเตอร์ใน/etc/my.cnfไฟล์; มิฉะนั้นให้จัดสรร RAM เพิ่มให้กับเซิร์ฟเวอร์

  1. นอกจากนี้ให้ตรวจสอบบันทึก MySQL เพื่อดูคำเตือนและคำแนะนำ
กระบวนการ ปณิธาน
httpd 1. ตรวจสอบจำนวน RAM โดยเฉลี่ยที่แต่ละตัวใช้httpdตัวอย่างที่ 2 ลบเครื่องหมายกำหนดค่าอัตโนมัติ Ruk-Com PaaSภายใน/etc/httpd/httpd.confไฟล์ 3 ลดลงเซิร์ฟเวอร์จำกัดและMaxClientsค่าตามสูตร:(Total_RAM - 5%) / Average_RAM
mysqld 1.หากใช้อินโนดีบี(โดยค่าเริ่มต้นสำหรับ MySQL 5.5 และสูงกว่า) ให้ตรวจสอบขนาดบัฟเฟอร์ด้วยแสดงสถานะเครื่องยนต์ INNODB\G;สั่งการ. ในกรณีที่มีค่าบัฟเฟอร์สูง (มากกว่า 80% ของ RAM คอนเทนเนอร์ทั้งหมด) ให้ลดขนาดพูลที่อนุญาตด้วยinnodb_buffer_pool_sizeพารามิเตอร์ใน/ฯลฯ/my.cnfไฟล์ 2 ตรวจสอบบันทึก MySQL เพื่อดูคำเตือนและคำแนะนำ
* PostgreSQL#### คำแนะนำทั่วไป

จัดสรร RAM ให้กับ Node ที่เกี่ยวข้องมากขึ้น - บริการที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มขึ้นสำหรับการทำงานตามปกติ

กระบวนการ ปณิธาน
httpd 1. ตรวจสอบจำนวน RAM โดยเฉลี่ยที่แต่ละตัวใช้httpdตัวอย่างที่ 2 ลบเครื่องหมายกำหนดค่าอัตโนมัติ Ruk-Com PaaSภายใน/etc/httpd/httpd.confไฟล์ 3 ลดลงเซิร์ฟเวอร์จำกัดและMaxClientsค่าตามสูตร:(Total_RAM - 5%) / Average_RAM
โพสต์เกรส จัดสรร RAM ให้กับ Node มากขึ้น - บริการที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มขึ้นสำหรับการทำงานตามปกติ
* Redis#### คำแนะนำทั่วไป

จัดสรร RAM ให้กับ Node ที่เกี่ยวข้องมากขึ้น - บริการที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มขึ้นสำหรับการทำงานตามปกติ

กระบวนการ ปณิธาน
Redis-เซิร์ฟเวอร์ จัดสรร RAM ให้กับ Node มากขึ้น - บริการที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มขึ้นสำหรับการทำงานตามปกติ

กระบวนการทั่วไปสำหรับสแต็กประเภทต่างๆ

คำแนะนำทั่วไป

กระบวนการในส่วนนี้สามารถรันและต่อมาถูกหยุดทำงานภายใน Node ประเภทต่างๆดังนั้นความละเอียดของ OOM จึงแตกต่างกันไปและขึ้นอยู่กับกระบวนการ - ดูตารางด้านล่างเพื่อค้นหาคำแนะนำที่เหมาะสม

กระบวนการ สแต็ค ปณิธาน
httpd PHP รูบี้ไพธอน MySQL PostgreSQL 1. ตรวจสอบจำนวน RAM โดยเฉลี่ยที่แต่ละตัวใช้httpdตัวอย่างที่ 2 ลบเครื่องหมายกำหนดค่าอัตโนมัติ Ruk-Com PaaSภายใน/etc/httpd/httpd.confไฟล์ 3 ลดลงเซิร์ฟเวอร์จำกัดและMaxClientsค่าตามสูตร:(Total_RAM - 5%) / Average_RAM
lsyncd PHP NodeJS หลาม จัดสรร RAM ให้กับ Node มากขึ้น - บริการที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มขึ้นสำหรับการทำงานตามปกติ
httpd.itk PHP รูบี้ไพธอน 1. ตรวจสอบจำนวน RAM โดยเฉลี่ยที่แต่ละตัวใช้httpdตัวอย่างที่ 2 ลบเครื่องหมายกำหนดค่าอัตโนมัติ Ruk-Com PaaSภายใน/etc/httpd/httpd.confไฟล์ 3 ลดลงเซิร์ฟเวอร์จำกัดและMaxClientsค่าตามสูตร:(Total_RAM - 5%) / Average_RAM
โปรแกรมเมล ใดๆ รีสตาร์ทคอนเทนเนอร์เพื่อคืนค่ากระบวนการ
vsftpd ใดๆ รีสตาร์ทคอนเทนเนอร์เพื่อคืนค่ากระบวนการ
ยำ ใดๆ รีสตาร์ทคอนเทนเนอร์เพื่อคืนค่ากระบวนการ
ซีซี 1 บุคคลที่สาม จัดสรร RAM ให้กับ Node มากขึ้น - บริการที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มขึ้นสำหรับการทำงานตามปกติ
หอย บุคคลที่สาม จัดสรร RAM ให้กับ Node มากขึ้น - บริการที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มขึ้นสำหรับการทำงานตามปกติ
ffmpeg บุคคลที่สาม จัดสรร RAM ให้กับ Node มากขึ้น - บริการที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มขึ้นสำหรับการทำงานตามปกติ
ไฟร์ฟอกซ์ บุคคลที่สาม จัดสรร RAM ให้กับ Node มากขึ้น - บริการที่ได้รับการจัดการอาจต้องการหน่วยความจำเพิ่มขึ้นสำหรับการทำงานตามปกติ
newrelic-ภูต บุคคลที่สาม เริ่มบริการสแต็กหลักใหม่ (nginx, tomcat, nodejs ฯลฯ )