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