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

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

RUK-COM PAAS / APPLICATION SETTINGS

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

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

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

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

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

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

Load Balancer

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

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

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

ApplicationServer

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

  • ชวา

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

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

ชวา -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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ServerDatabase

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

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

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

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

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

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

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

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

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

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

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

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

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