สรุปปัญหาเรื่อง performance

หลายวันที่ผ่านมา มีโอกาสเข้าไปดูและแก้ไขปัญหา ของ API ในระบบหนึ่ง ซึ่งมีปัญหาต่าง ๆ มากมาย หนึ่งในนั้นคือ ผลการทำงานที่แย่ หรือ performance ไม่ดี ทั้งช้า ใช้งาน CPU และ Memory เยอะ

2021-10-18 10:42:53 - @ratanon

การแก้ไขปัญหาเฉพาะหน้าคืออะไร ?

แต่ถ้าสำหรับ long term solution มาดูปัญหาที่เป็นอยู่กันหน่อย

เพื่อจะได้แก้ไขที่ต้นเหตุกัน ประกอบไปด้วย

การแก้ไขปัญหาต่าง ๆ แบบง่าย ๆ หรือเปล่านะ แต่น่าจะเป็นแนวทางที่ดีขึ้น

ยกตัวอย่างเช่น

ปัญหา business logic ที่ทำงานแบบ sequential และ ซับซ้อน

พบเจอเยอะมาก ๆ สำหรับปัญหานี้ เพราะว่า การทำงานแบบ sequential มันทำได้ง่าย เข้าใจง่าย แต่บ่อยครั้งพบว่า ขั้นตอนการทำงานต่าง ๆ อาจจะทำงานพร้อม ๆ กันได้ ไม่จำเป็นต้องรอกัน ดังนั้นเรื่องของ parallel process จึงเข้ามามีบทบาท หรือบางงานอาจจะแยกไปทำงานใน process อื่น ๆ ได้ หรืออาจจะทำงานแบบ asynchronous ได้ หรือแยกไปอีกระบบตามแนวคิด event-based architecture ก็ได้

ปัญหาต่อมาคือ ความซับซ้อน อาจจะทำให้ transaction นานเกินไป

ทำให้ database/table เกิด lock ได้ หรือ database ทำงานหนักมาก ๆ ดังนั้น ควรแยกการทำงานย่อย ๆ หรือเป็นกลุ่มออกมา เพื่อลดปัญหาการ lock หรือ long transaction ลงไป แต่ความถูกต้องยังต้องถูกต้องเช่นเดิม ทั้ง success และ fail หัวใจคือ ในแต่ละ transaction ต้องจบงานเร็วที่สุด หรือพยายามใช้ caching data เพื่อลดการ access database ลงไป ก็ช่วยได้

ปัญหา API ทำการ return ข้อมูลเยอะเกินไป

ปัญหานี้เกิดจากการ reuse หรือเหลือดีกว่าขาด ดังนั้น return ไปเยอะ ๆ เลย จะใช้อะไรก็เลือกใช้เอง แบบนี้ดีไหมนะ

ลองตรวจสอบและแก้ไขปัญหากันดูครับ

More Posts