Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

Tip :: ใช้งาน Asynchronous logging ใน Java

$
0
0

หนึ่งในปัญหาต่อเรื่อง performance ของระบบงาน
คือการเขียน log ของระบบงานลง file system !!
ซึ่งพบว่า ถ้าเปลี่ยนมาใช้การเขียน log แบบ Asynchronous จะดีกว่า Synchronous
เป็นเรื่องเล็ก ๆ ที่อาจจะส่งผลเยอะเช่นกัน
ดังนั้นลองมาปรับเปลี่ยนกันดู

โดยตัวอย่างเป็นการ config ใน Log4j นั่นเอง

[gist id="3a5919006d87c78453e6f0fb78045365" file="1.xml"]

จากการทดสอบนั้น performance ดีขึ้น 50% กันเลย
รวมทั้งลดการใช้งาน memory ลงไป
ที่สำคัญไม่ไป block การทำงานบน main thread อีกด้วย

โดยใน Log4j นั้นจะใช้งาน Disruptor สำหรับ Asynchronous log
ดังนั้นเพิ่ม library ใน project ด้วย

[gist id="3a5919006d87c78453e6f0fb78045365" file="pom.xml"]

แต่ปัญหาที่ตามมาคือ

  • การ config ที่เยอะขึ้น รวมทั้งเปลี่ยนแนวคิดด้วย
  • ลำดับของ log จะไม่สามารถควบคุมได้ ดังนั้นจะส่งผลต่อการนำ log ไปประมวลผลอื่น ๆ ต่อไป

Reference Websites

https://medium.com/@knowledge.cafe/async-logging-the-speed-boost-your-java-apps-d9d161ad1fe4


Viewing all articles
Browse latest Browse all 1997

Trending Articles