Tuesday, April 01, 2008

ลงตัว test jabber openfire

ทีแรกไปดู document เกี่ยวกับปริมาณโหลดสูงสุดของ openfire มันสามารถรับ user ได้มากถึงแสนคน (concurrent)
โดยมีตัวช่วยกระจายโหลด คือ connection manager เป็น app แยกออกมาช่วยจัดการในวงเล็กก่อน forward ต่อไปที่ openfire ตัวหลักตาม info นี้ http://www.igniterealtime.org/projects/openfire/connection_manager.jsp

1 connection manager ตีได้ว่ารองรับได้ 25,000 concurrent transaction นะ
เค้าแบ่งตามการ test ไว้ตามนี้
Hardware Recommendations

Concurrent Users Recommendation
1-500 At least 384 MB of available RAM and one 1.5 GHz processor.
501-10,000 At least 768 MB of available RAM and one 3.0 GHz processor.
10,001-25,000 At least 1.5 GB of available RAM, two 3 GHz processors,
and one connection manager on the same machine.
25,001-100,000 At least 2.0 GB of available RAM, two 3 GHz processors,
and between 1 and 4 connection managers based on exact size,
each on their own equivalent machine.

การเพิ่ม load จะเป็นผลพลอยได้จากการทำ cluster ได้ด้วย ที่จริงน่าจะทำไปเพื่อลด downtime เป็น backup system มากกว่า
info ที่นี่ http://www.igniterealtime.org/community/docs/DOC-1471 และ http://www.igniterealtime.org/community/docs/DOC-1260 และ http://www.jivesoftware.com/products/openfire/features/clustering.jsp อันหลังไม่ค่อยมี info อะไน

คิดราคาตามนี้ http://www.jivesoftware.com/pricing/

กลับมาเรื่อง test ทาง igniterealtime แบ่งทีม QA มาโดยเฉพาะ ชื่อว่า QA Ninjas ชื่อเท่ห์ดีจัง
http://wiki.igniterealtime.org/display/NINJA/QA+Ninjas+Overview
http://wiki.igniterealtime.org/display/NINJA/Tsung+Tests
ในช่องของ Load test มีตัวที่ผมสนใจก็คือ TSung เพราะใน document ของ openfire เกี่ยวกับปริมาณหารโหลด เป็น pdf file จำไม่ได้แล้วว่า link ไหน เขียนไว้ว่าใช้ Tsung ในการทดสอบ และแสดงผลออกมาเป็นกราฟได้ เท่าที่เรียนมากการวัดประสิทธิภาพ ถ้าโปรแกรมทำให้เป็นกราฟได้จะดีมาก เพราะวัดผล เปรียบเทียบกันง่าย.. แต่วันก่อนคุยกะ tom ทอมบอกไม่ได้ต้องการขนาดนั้น

เพราะลง Tsung ไม่ได้ซักที ติดเรื่อง ODBC เพราะ Elang OTP มันมองไม่เห็น ODBC ที่ลงไว้ซักที ลงเองก็ไม่ค่อยเป็น เพราะลงจาก rpm มีปัญหาหรือเปล่าก็ไม่รู้เหมือนกัน เลยใช้ edit ไปที่ file odbc.ini แล้วก็ odbcinst (มั้ง) ตาม link นี้ เขียน info ไว้ดีทีเดียว เกี่ยวกับ odbc บน linux http://www.easysoft.com/developer/interfaces/odbc/linux.html
คำสั้งที่ได้ใช้ไป

[root@localhost jab_simul]# odbcinst -j
unixODBC 2.2.11
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
USER DATA SOURCES..: /root/.odbc.ini

แก้ไข odbcinst.ini
# Example driver definitinions#
#
# Included in the unixODBC package
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/lib/libodbcpsql.so
Setup = /usr/lib/libodbcpsqlS.so
FileUsage = 1

# Driver from the MyODBC package
# Setup from the unixODBC package
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc.so
Setup = /usr/lib/libodbcmyS.so
FileUsage = 1

แก้ไข odbc.ini
[ODBC_datasource_name}
Driver = driver_name
Description = description_of_data_source
attribute1 = value
.
.
attributen = value

ผมใช้ odbc source ที่มี installer ทดสอบดูด้วยว่า มองเห็นไหม ก็มองเห็นดีนี่นา
mysql-connector-odbc-5.1.3-rc-linux-x86-32bit/bin/myodbc-installer -d -l
PostgreSQL
MySQL

ทดสอบว่า connect ผ่าน odbc ได้
isql -v DSN_NAME db_username db_password


แต่พอสั่ง ./configure ใน source ของ otp_src_R12B-1 ของ elang ก็เจ๊งอยู่ดี
มันจะขึ้น error ในตอนท้ายว่า ODBC library - link check failed

ที่จริงผมลง unixODBC พร้อม mysql มาตั้งแต่ install Redhat แล้ว แต่ version มันต่ำไปหน่อย mysql version 4 เอง ก็เลยถูกสงสัยว่าเป็นเพราะ version ไม่ compat กันหรือยังไงกับ otp ลงใหม่เป็น version 5 ก็ได้ info จาก link นี้ http://somdej17.moph.go.th/hosxp/hosxp_help/Wcf054208e7f86.html
ก็เป็นการ force ให้ลงทับโดยไม่สนใจ depandency คงประมานนั้นด้วย option nodeps
rpm -ivh MySQL-shared-5.0.37-0.glibc23.i386.rpm --nodeps --force
rpm -ivh
MySQL-client-5.0.37-0.glibc23.i386.rpm --nodeps --force
rpm -ivh
MySQL-server-5.0.37-0.glibc23.i386.rpm --nodeps --force


พยายามแก้ไข my.cfg แต่ไม่สำเร็จ กลายเป็น start mysql ไม่ได้
เลยแก้กลับเป็น my.cfg แบบ default

ทำอยู่นานสรุปว่าไม่ได้อะไร หมดหนทางลง tsung
ลอง search ใหม่ ได้หน้านี้มา http://www.ejabberd.im/benchmark มันคือ jabsimul ไว้ทดสอบ ejabberd
ทีแรกหาที่ downlaod ไม่ได้.. ที่จริง เราสามารถใช้ linux command (cvs หรือ wget) download ได้เลย
ตามนี้ยกมาบางส่วน
แก้ config ของ linux ละมั้ง
ulimit -n 16000

ดาวน์โหลดมาเลย make อย่างไงไปดูเอาเอง
cvs -z3 -d:pserver:anonymous@jabbertest.cvs.sourceforge.net:/cvsroot/jabbertest co testsuite

สั่งรันสร้าง user ที่ server ลองแล้วเปลี่ยนไปเป็น openfire ก็ได้ผลเหมือนกัน
./userreg -h localhost -u 3000 -n 1

จากนั้นลง jabsimul
wget http://www.ejabberd.im/files/other/jabsimul.tar.gz
tar xzf jabsimul.tar.gz
cd jabsimul/jab_simul/
cp jab_simul.xml.example jab_simul.xml
./configure
make

สั่ง run จริงๆต้องแก้ jab_simul.xml ก่อน แต่ลองทำไปโดยไม่แก้เพื่อดูผล
./jab_simul

ผลคือมันมีตัวเลขวิ่งๆ เป็น text based น่าจะใช้ได้นะ ลงไม่ยากเท่าไรด้วย
วันนี้จะลองแก้ไข xml config นี้แล้วค่อนรันดู เรื่อง connection manager คงยังไม่ได้ไปทำอะไรมัน

No comments: