30K

Hardware

Intel Q8400@2.66Ghz

CentOS6.5 2.6.32-431.17.1.el6.x86_64

Oracle Java 8 update 20

mpstat

เอา Mpstat มายืนยันว่ามันสุดแล้วจริงๆนะ CPU Full Load ตลอดเวลา จริงๆตอนแรกเอา Jmeter มารันบน windows แต่กลายเป็นว่า CPU peak 100% ยังได้แค่ 10k req/sec ก็เลยต้องเปลี่ยนมาใช้ Wrk รันจาก Linux VM บน windows ก็ทำได้แค่ 14k req/sec เลยย้ายไปรันที่ localhost ซะเลย เลยได้มา 30k req/sec จริงๆถ้าเครื่อง desktop ผมแรงกว่านี้ก็น่าจะซัดไปได้อีกพอสมควร

โอกาสหน้าจะลองเขียนวิธีการทำ Performance Testing ซึ่งเป็นศาสตร์อย่างหนึ่งที่หลายๆคนยังไม่เข้าใจ แล้วก็ค่อนข้างจะมีรายละเอียดซับซ้อน และก็ยากจนผมก็ไม่เข้าใจเหมือกัน😛

จริงๆไม่ได้กะมาทดสอบอะไร แค่ลองมาเล่น Activator ของ Typesafe

เปิดมาก็ตื่นเต้นเลย ทำไมมันดูไฮโซเช่นนี้

activator

สามารถทำงานได้ทุกอย่างบน Browser ไม่ว่าจะเป็นเขียน รัน เทส ครบถ้วนกระบวนความ เอาเข้าจริงๆแทบจะไม่ต้องใช้ IDE เลย ชอบมากๆ

Play framework

เคยใช้ครั้งแรกเมื่อประมาณ 3 ปีที่แล้วตอนที่ยังเป็น version 1 กลับมาใช้อีกทีก็ไม่ได้แตกต่างกันมากมายนัก (เหมือนเดิมเลย เพราะใช้ไม่ครบทุกฟังก์ชั่น) หลังจากนั้นก็มีโอกาสได้ใช้มาเรื่อยๆ เอามาทำ Stub บ้างอะไรบ้าง วันนี้ไม่รู้เป็นอะไรอยากเขียน Scala เล่นๆ ก็เลยลองโหลด activator มาใช้ดู

Play ทำงานอยู่บน Netty ซึ่งเป็น asynchronous web server ดังนั้นความเร็วไม่ต้องห่วงน่าจะไวที่สุดเท่าที JVM ทำได้แล้ว (ไวกว่านี้คงเป็น RxNetty ของ Netflix)

ขอกระโดดข้ามการติดตั้งไปที่ code เลยละกัน ซึ่งจริงๆก็แค่แตก zip แล้วรัน ./activator ui

โค้ดธรรมดามากแค่เปลี่ยนจาก Class product ให้เป็น json string ซึ่งกว่าจะเขียนเข้าใจได้ก็เล่นเอางงเหมือนกัน

controller routes

แต่ผมชอบ operation บน json/XML ของ scala มาก แค่ใส่ xpath (ที่ไม่ซับซ้อน ถ้าซับซ้อนก็ตัวใครตัวมัน) ลงไปมันก็ query ออกมาให้ได้เลย code scala มันสั้นกว่า java จริงๆ

หลังจาก เราเขียน code เสร็จแล้ว ก็สามารถ pack application แล้วเอาไปรันได้เลยด้วยคำสั่ง

./activator

play dist

ซึ่งจะสร้างไฟล์ zip ออกมาให้ แล้วเราก็เอาไปแตก zip แล้วรัน bin/… เป็นอันเสร็จ