คู่มือ 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
คำแนะนำทั่วไป
-
หากปัญหาเกิดขึ้นกับ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)
-
สำหรับ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 |
| * | |
| หลาม |
คำแนะนำทั่วไป
-
หากปัญหาเกิดขึ้นกับ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)
- มิฉะนั้นให้จัดสรร 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#### คำแนะนำทั่วไป
- หากใช้อินโนดีบีengine (ฝังตั้งแต่เวอร์ชัน 5.5 MySQL) ตรวจสอบขนาดบัฟเฟอร์ด้วยคำสั่งถัดไป:
แสดงสถานะเครื่องยนต์ INNODB\G;
ในกรณีที่มีค่าบัฟเฟอร์สูง (มากกว่า 80% ของ RAM Container ทั้งหมด) ให้ลดขนาดของพูลที่อนุญาตด้วยinnodb_buffer_pool_sizeParameter ใน/etc/my.cnfไฟล์; มิฉะนั้นให้จัดสรร RAM เพิ่มให้กับ Server
- นอกจากนี้ให้ตรวจสอบบันทึก 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 ฯลฯ ) |
