thaiall logomy background
jmeter ทดสอบประสิทธิภาพของเครื่องบริการ
my town
omni | nginx | jmeter |
jmeter
Apache JMeter คือ Open Source Software ที่พัฒนาด้วยภาษา Java เพื่อใช้ทดสอบความสามารถในการรับโหลด พฤติกรรม และวัดประสิทธิภาพของเครื่องบริการ ปัจจุบันกำหนดเงื่อนไขการทดสอบได้หลากหลายยิ่งขึ้น ไม่ได้ทดสอบเฉพาะ Web Application เท่านั้น
ารใช้งาน Apache JMeter นั้น ต้องติดตั้ง Java รุ่น 8 ขึ้นไป การทดสอบเริ่มต้นจากการ Download : JMeter เมื่อได้แฟ้ม .zip แล้ว unzip จะได้แฟ้ม .jar ส่วนการ run ก็ไป right click บนแฟ้ม ApacheJMeter.jar ในห้อง /bin แล้วเลือก Open with - Java(TM) Platform SE Binary ก็จะเข้าสู่โปรแกรม JMeter แล้วเริ่มกำหนดรายละเอียดที่จะใช้ทดสอบเครื่องบริการเป้าหมาย
นะนำว่า ควรทดสอบบนเครื่องของตนเอง เช่น ติดตั้ง JMeter และทดสอบกับ XAMPP หรือ NGINX บนเครื่องเดียวกัน มี OS : Windows 10 Home ที่ติดมากับ Notebook มี CPU : Intel(R) Core(TM) i3-6006U CPU @ 2.00GHz, 1992Mhz, 2 Core(s), 4 Logical Processor(s) มี Web Server : XAMPP5.6 , XAMPP7.1 และ NGINX1.21 มี RAM : 4 GB ถามว่า เครื่องบริการแบบท้องถิ่นตัวเล็กสักเครื่องหนึ่ง จะสามารถรับการร้องขอจากภายในเครื่องของตนเองได้สักกี่มากน้อย
ทความใน digitalocean.com เขียนโดย Melissa Anderson ได้อธิบายว่า Load balancing คือ องค์ประกอบสำคัญที่ทำให้มีการอนุญาตให้เข้าใช้ทรัพยากรพร้อมกันจำนวนมากได้ โดยปรับปรุงประสิทธิภาพ และความน่าเชื่อถือของเว็บไซต์ โปรแกรมประยุกต์ ระบบฐานข้อมูล และบริการอื่น ด้วยการกระจายคำร้องขอข้อมูลจำนวนมากถูกกระจายไปตามเครื่องบริการหลายเครื่องได้
สิ่งที่ต้องเข้าใจระหว่างใช้ Jmeter
รุ่น และโปรแกรมที่ใช้บนเครื่องบริการที่ต่างกัน
การเปิด-ปิดเครื่องบริการหลายตัวสลับกัน
นิยามของ Round Robin
นิยามของ Forward / Reverse proxy
ข้อมูลที่เรียกว่า Static file และ Size
ข้อเด่น ข้อด้อยของ Connection และ DBMS
นิยามของ Log file
Cloud Flare หรือ CDN
Cloud Server และ VPS
ทดสอบ Load Test
รั้งหนึ่ง ได้ทดสอบเครื่องบริการโดยใช้โปรแกรม Jmeter วัดประสิทธิภาพของเครื่องบริการ (Web server) แบบ Internal Request พบว่า ตัวเดียวรับได้ประมาณ 500 concurrent จึงเพิ่มเป็น 2 ตัว และใช้ Load balance แบบใช้ DNS ทำ Round Robin ด้วย ISC Bind บน Localhost หรือสร้างโฮสผ่านแฟ้ม hosts ที่อยู่ในระบบปฏิบัติการวินโดว์ส การตั้งค่า IPv4 DNS Server เพื่อกำหนดให้ Local host เป็น Primary หรือ Prefered DNS และ IP : 8.8.8.8 เป็น Scondary หรือ Alternated DNS ซึ่งการทดสอบนี้ทำบน Notebook เครื่องเดียว ทั้งตัววัด และตัวถูกวัด ส่วน Web server ใช้ Xampp 5.6 กับ 7.1 แต่กำหนด IP Address ให้กับเครื่องบริการแตกต่างกัน ผลลัพธ์ คือ สามารถเพิ่ม Concurrent ได้ เมื่อเลือกใช้ Round robin รองรับการร้องขอจำนวนมาก ส่วนแฟ้มที่ใช้ทดสอบ ใช้ Batch file สร้างแฟ้ม ชื่อ onemb.htm มีขนาด 1 MB ใช้เวลาสร้างยาวนานถึง 25 นาที แต่เมื่อใช้ภาษา python สร้างแฟ้ม 1 MB กลับใช้เวลาไม่ถึง 5 วินาที
คณกรณ์ หอศิริธรรม เขียน How to JMeter ไว้อย่างละเอียดที่ sysadmin.psu.ac.th
ตัวอย่างแฟ้ม onemb.jmx สำหรับใช้บน JMeter ที่ได้กำหนดค่าต่าง ๆ สำหรับทดสอบ
ข้อจำกัดของ apache, php, mysql
ร่างกายคนเรา ก็เหมือนกับ เครื่องคอมพิวเตอร์ ยิ่งเรารู้ข้อจำกัดของเครื่องคอมพิวเตอร์มากเท่าใด ก็ยิ่งใช้งานได้เต็มประสิทธิภาพมากเท่านั้น เช่นเดียวกับร่างกายของคนเรา ยิ่งออกกำลังมากเท่าใด ก็ยิ่งรู้ถึงขีดจำกัดว่าร่างกายอึด ทน และมีให้ใช้ได้มากเพียงใด เพื่อที่จะนำกำลังกายออกมาใช้ได้อย่างเต็มที่ ดังนั้น การทดสอบ เพื่อหาขีดจำกัดของมนุษย์ เช่น ทดสอบสมรรถภาพของร่างกายของนักเรียนเตรียมทหาร เช่นเดียวกับ การทดสอบ ประสิทธิภาพของเครื่องบริการ ว่า 1) apache จะรองรับจำนวน request ที่มีชีวิตอยู่ในเครื่องบริการพร้อมกันได้จำนวนเท่าใด 2) mysql จะรองรับขนาดแพคเกจสูงสุดได้กี่ไบท์ กรณีเขียน SQL ขนาดยาวมาก หรือ 3) php จะรองรับการอัพโหลดแฟ้มเข้าระบบได้สูงสุดกี่ megabyte
ระสบการณ์ (experience) เป็นหัวข้อหนึ่งใน 3 หัวข้อ ที่ นิสิตอ่านมา แล้วแชร์ลิงค์ เมื่อต้องไปเขียน resume เตรียมสมัครงาน ว่า ผู้วางระบบ ผู้พัฒนา โปรแกรมเมอร์ หรือเครื่องบริการ ต่างจำเป็นต้องมี 1) ความเชี่ยวชาญ (proficient) 2) ประสบการณ์ (experienced) 3) ความคุ้นเคย (familiar) ทำให้นึกถึงเรื่อง การติดตั้งเครื่องบริการ ที่ผู้ออกแบบระบบจำเป็นต้องมีทักษะ รู้ข้อจำกัดด้านฮาร์ดแวร์ ซอฟต์แวร์ และเครือข่าย รู้เท่าทันเครื่องบริการของเรา แล้วสามารถเตรียมเครื่องบริการให้พร้อมสำหรับรองรับ จำนวนการร้องขอ (request) ในระดับหลักร้อย หลักพัน หลักหมื่น ถึงหลักแสน ว่าจะต้องใช้ทรัพยากรอะไรมารองรับคำร้องเหล่านั้น หากเคยใช้คอมพิวเตอร์เพียงเครื่องเดียวก็คงเรียกได้ว่า คุ้นเคย หรือคุ้น ๆ แต่ถ้าใช้สองเครื่องขึ้นไป รองรับคำร้องได้นับร้อย นับพัน สามารถนับได้ว่า พอจะมีประสบการณ์ แต่ถ้าเคยออกแบบระบบที่ใช้บริการ cloud server ร่วมกับ load balance ให้สามารถรองรับบริการคำร้องขอนับพัน นับหมื่น ถึงจะเรียกว่า มีความเชี่ยวชาญ
ISC Bind
ISC Bind
http://www.zytrax.com/books/dns/ch5/win2k.html
1. เข้า https://www.isc.org/download/
2. unzip BIND9.16.19.x64.zip
3. ติดตั้งด้วย bindinstall.exe 
4. Command Prompt (Admin)
5. cd "C:\Program Files\ISC BIND 9\bin"
6. C:\Program Files\ISC BIND 9\bin> rndc-confgen -a
wrote key file "C:\Program Files\ISC BIND 9\etc\rndc.key"

https://alex.charrett.com/bind-on-windows
7. rndc-confgen >..\etc\rndc.conf
8. copy rndc.conf named.conf
9. notepad named.conf ลบ # ตามคำแนะนำในแฟ้ม
# Use with the following in named.conf, adjusting the allow list as needed:
key "rndc-key" {
	algorithm hmac-sha256;
 	secret "El53ACx+3vhUVA62mGHo2HCec9VXi2o8ay+qKMwRUy4=";
 };
controls {
 	inet 127.0.0.1 port 953
	allow { 127.0.0.1; } keys { "rndc-key"; };
};
options {
	directory "E:\named\etc";
	session-keyfile "E:\named\session.key";
};
# End of named.conf

10. คัดลอก C:\Program Files\ISC BIND 9\etc ไปไว้ E:\named\etc
http://www.zytrax.com/books/dns/ch5/win2k.html
https://www.howtoforge.com/windows_bind9
https://www.pluralsight.com/blog/it-ops/configure-bind-dns-on-windows-web-server-2008

10. เพิ่ม zones ใน named.conf
zone "burin1.com" {
    type master;
    file "E:\named\zones\db.burin1.com.txt"; 
    allow-transfer { none; };
};
zone "burin2.com" {
    type master;
    file "E:\named\zones\db.burin2.com.txt"; 
    allow-transfer { none; };
};
11. สร้างแฟ้ม E:\named\zones\db.burin1.com.txt
$TTL	1h
@	IN SOA	ns1.burin1.com. hostmaster.burin1.com (
		2021081501 ; Serial
		30800 ; Refresh
		7200 ; Retry
		604800 ; Expire
		300 ) ; Minimum
@		IN NS	ns1.burin1.com.
ns1		IN A		127.0.0.1
dns	IN A		127.0.0.1
12. services.msc
13. ISC BIND : start
14. event viewer
failed to generate session key for dynamic DNS: permission denied
15. แก้ไข dns เป็น 127.0.0.1 และ 8.8.8.8 
16. nslookup ทดสอบ burin1.com หรือ ping www.burin1.com ก็ได้

Round robin

17. เพิ่ม zone ใน named.conf
zone "0.0.127.in-addr.arpa" {
    type master;
    file "E:\named\zones\rev.0.0.127.in-addr.arpa";
};
18. สร้างแฟ้ม E:\named\zones\rev.0.0.127.in-addr.arpa
$TTL    1h
@   IN  SOA ns1.burin1.com master.burin1.com (
		2021081501 ; Serial
		30800 ; Refresh
		7200 ; Retry
		604800 ; Expire
		300 ) ; Minimum
@   	IN  NS  ns1
ns1 	IN  A   127.0.0.1
1 	IN  PTR burin1.com
2 	IN  PTR www.burin2.com
3 	IN  PTR www.burin2.com
19. แก้ไขแฟ้ม E:\named\zones\db.burin2.com.txt
$TTL	1h
@	IN SOA	ns1.burin1.com. hostmaster.burin1.com (
		2021081502 ; Serial
		30800 ; Refresh
		7200 ; Retry
		604800 ; Expire
		300 ) ; Minimum
@		IN NS	ns1.burin1.com.
www	IN A		127.0.0.2
www	IN A		127.0.0.3
20. ผลการใช้ nslookup ตรวจ www.burin1.com จะได้ 2 ip address
21. แก้ไข config ทั้ง 2 server เป็นคนละ ip แต่ 80 เหมือนกัน
c:\xampp5\apache\conf\httpd.conf 
Listen 127.0.0.2:80
c:\xampp7\apache\conf\httpd.conf 
Listen 127.0.0.3:80
แต่พบว่า 443 ชนกัน ต้องปิด ssl ลง 1 server เพราะไม่ได้ใช้
# burin Include conf/extra/httpd-ssl.conf
22. เรียก apache_start.bat จากทั้ง 2 server แล้วสั่งเปิด
http://127.0.0.2
http://127.0.0.3
พบหน้าตาคนละแบบ
23. เปิด jmeter แล้วกำหนด Server Name เป็น www.burin2.com
round robin - 3000 user พบ error 60%
round robin - 2000 user พบ error 20%
single server - 3000 user พบ error 70%
single server - 2000 user พบ error 30%
test on xampp56
เมื่อใช้ JMeter ทดสอบ HTTP Request 
ก็จะพบการร้องขอใน access.log
ซึ่งใน 1 วินาที ร้องขอไป 1000 request
แต่ apache ตอบได้ 488 request ที่เหลือไม่ response
รายการแรก
127.0.0.1 - - [30/Jun/2018:08:48:53 +0700] "GET /onemb.htm HTTP/1.1" 200 1000000 "-" "Apache-HttpClient/4.5.5 (Java/10.0.1)"
รายการสุดท้าย
127.0.0.1 - - [30/Jun/2018:08:48:57 +0700] "GET /onemb.htm HTTP/1.1" 200 1000000 "-" "Apache-HttpClient/4.5.5 (Java/10.0.1)"
ห่างกัน 4 วินาที

Load balancer
https://stackoverflow.com/questions/28663033/how-can-i-set-up-a-load-balancer-for-multiple-virtual-hosts-apache
http://httpd.apache.org/docs/2.4/mod/mod_proxy_balancer.html
https://wiki.magnolia-cms.com/display/WIKI/Guide+-+How+to+configure+an+apache+load+balancer
เปรียบเทียบผลการใช้ jmeter
https://jmeter.apache.org/download_jmeter.cgi
Apache JMeter 5.4.1 (Requires Java 8+)
https://downloads.apache.org//jmeter/binaries/apache-jmeter-5.4.1.zip

C:\Users\burin> java -version
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)

unzip in E:\_pub
พบ ApacheJMeter.jar ใน E:\_pub\apache-jmeter-5.4.1\bin

Open : ApacheJMeter.jar บนเรื่องที่ติดตั้ง Java 8+
1. เปิด apache_start.bat และทดสอบ http://localhost/index.html คือ apache บน xampp7
2. เปิดโปรแกรม ApacheJMeter.jar ในหน้าแรกพบ Test plan รอข้อมูลอยู่
3. Test plan, Menu bar, Add, Config Element, HTTP Request Defaults จะพบหน้าต่างใหม่
4. Protocol[http]: http, Server Name or IP: 127.0.0.1, Port Number: 80, Path: /index.html, Add
5. Test plan, Menu bar, Add, Threads (Users), Thread Group จะพบหน้าต่างใหม่
6. Name: 1000, Number of Threads (users): 1000 หรือตามจำนวนที่ต้องการทดสอบ
7. [under] 1000, Menu bar, Add, Sampler, HTTP Request จะพบหน้าต่างใหม่
8. [under] 1000, HTTP Request, Protocol[http]: http, Server Name or IP: 127.0.0.1, Port Number: 80, HTTP Request : GET, Path: /index.html, Add
9. Test plan, Menu bar, Add, Timer, Constant Timer  จะพบหน้าต่างใหม่
10. Thread Delay (in milliseconds):1000 = 1 วินาที (เดิม 300) ***
11. Test plan, Check: Run Thread Groups consecutively (i.e. one at a time)
12. Test plan, Menu bar, Add, Listerner, Summary Report จะพบหน้าต่างใหม่
13.Check: Include group name in label?
14. Menu bar, Save, testplan.jmx ในห้อง bin
15. Test plan, Run , Start หรือ Ctrl-R หรือคลิ๊ปปุ่ม Start
16. ถ้าแฟ้ม index.html มีขนาด 20 KB
17. เมื่อกำหนด Thread delay 1 วินาที และมี Number of Threads (users): 1000 พบทดสอบหลายครั้งส่วนใหญ่ error 0%
18. เมื่อกำหนด Thread delay 1 วินาที และมี Number of Threads (users): 5000 พบทดสอบหลายครั้งส่วนใหญ่ error 60% - 80%
19. ถ้าแฟ้ม helloworld.htm มีขนาด 12 Bytes
20. เมื่อกำหนด Thread delay 1 วินาที และมี Number of Threads (users): 2000 (avg.800) พบทดสอบหลายครั้งส่วนใหญ่ error 10%
21. เมื่อกำหนด Thread delay 1 วินาที และมี Number of Threads (users): 3000 - 5000 (avg.1300) พบทดสอบหลายครั้งส่วนใหญ่ error 60% - 80% ไม่ต่างกัน
22. เปลี่ยนจาก apache บน xampp7 เป็น nginx-1.21.1 กับแฟ้ม helloworld.htm
23. เมื่อกำหนด Thread delay 1 วินาที และมี Number of Threads (users): 2000 (avg.700) พบทดสอบหลายครั้งส่วนใหญ่ error 10%
24. เมื่อกำหนด Thread delay 1 วินาที และมี Number of Threads (users): 3000 - 5000 (avg.1200) พบทดสอบหลายครั้งส่วนใหญ่ error 60% - 80% ไม่ต่างกัน
25. ทดสอบกับ เครื่องบริการหนึ่ง หน้า index.html เป็น vps
26. เมื่อกำหนด Thread delay 1 วินาที และมี Number of Threads (users): 10 (avg.1000) พบทดสอบหลายครั้งส่วนใหญ่ error 0%
27. เมื่อกำหนด Thread delay 1 วินาที และมี Number of Threads (users): 1000 (avg.7000) พบทดสอบหลายครั้งส่วนใหญ่ error 0%
28. เมื่อกำหนด Thread delay 1 วินาที และมี Number of Threads (users): 2000 (avg.15000) พบทดสอบหลายครั้งส่วนใหญ่ error 0.25%
29. save เป็น onemb.jmx ไว้ทดสอบภายหลังอีกได้
ผลการทดสอบอยู่ใน log ทั้งหมด
ารทดสอบ ประสิทธิภาพของเครื่องบริการ ว่าจะรับ user ได้พร้อมกันกี่คนในหนึ่งช่วงเวลา ควรอย่างยิ่งที่จะทดสอบในเครื่องบริการของเรา ที่เราดูแล ไม่ควรไปทดสอบในเครื่องของคนอื่น เพราะเมื่อมีการทดสอบหลักร้อย หลักพัน หรือหลักหมื่น เครื่องบริการเป้าหมายจะได้รับ request และต้อง response กลับมายังโปรแกรมทดสอบ (JMeter) และมีการบันทึกรายการทดสอบทั้งหมดเก็บไว้ใน log file เช่น apache หรือ nginx จะเก็บไว้ในแฟ้ม logs/access.log ว่ามีใครส่งมา และตอบกลับได้บ้าง ส่วนที่ส่งไปแล้ว เครื่องบริการเป้าหมายรองรับไม่ได้ ก็จะไม่ถูกบันทึกเก็บไว้ใน Log file เพราะเกินกว่าศักยภาพของเครื่องบริการ ดังนั้นทุกครั้งที่มีการทดสอบ หมายถึง การทดสอบว่าเครื่องบริการจะรองรับได้ถึงระดับใดที่จะเกิดปัญหา จึงไม่ควรไปสร้างปัญหาให้กับเครื่องที่ไม่ใช่ของเรา ถ้ามีการตรวจสอบว่าเข้าถึงมากผิดปกติ อาจถูกดำเนินการปฏิเสธการร้องขอเป็นการถาวรได้
การสร้างหมื่นแฟ้ม หรือหนึ่งเมกะไบท์ สร้างแฟ้มจำนวนมาก ด้วย จาวา (/class)
ต.ย. 73 : สร้างหมื่นแฟ้มใช้เวลา 10 วินาที (/php)
สร้างแฟ้มขนาด 1 MB (/python)
การสร้างหมื่นแฟ้มใช้เวลา 4 วินาที (/python)
สร้างแฟ้ม 1 MB บน DOS (Batch file)
รวมเทคนิค Right click บน notepad เลือก Run as administrator
เปิดแฟ้ม C:\Windows\System32\drivers\etc\hosts
แล้วเพิ่ม 127.0.0.1 www.domain1.com แล้วสั่ง save
มีผลให้สั่ง ping ตาม url ที่กำหนดไว้ได้ทันที
ฟังก์ชัน Range() บน Excel สั่งกรอกข้อมูลใน Cell ได้อัตโนมัติ
แฟ้มกระดาษทำงาน A - DD : 1048576 (/office)
' Microsoft Visual Basic for Application on Excel
Sub all()
' Range("A1:XFD1048576") = 1 ถ้ามากไปก็จะค้างได้
Range("A1:DD1048576") = 1
End Sub
' Run or F5
' http://www.thaiall.com/office/a1dd1048576.rar = 113,246,208 cells (320,422,913 bytes)
' http://www.thaiall.com/office/a1dd1.xlsx = 108 cells (9515 bytes)
ทดสอบ mysql_test357.php ดสอบ 3 Thread group ได้แก่ 1) แฟ้มขนาดเล็ก คือ onecopycon.htm มีขนาด 1 ไบท์ เมื่อมี user เรียกพร้อมกัน 6000 คน พบ Error ประมาณ 28.33% 2) แฟ้มขนาดใหญ่ คือ onembpy.htm มีขนาด 1,000,000 ไบท์ เมื่อมี user เรียกพร้อมกัน 4000 คน พบ Error ประมาณ 68.45% 3) โปรแกรมรับการ insert ข้อมูล (mysql_test357.php) เมื่อมี user เรียกพร้อมกัน 300 คน คนละ 1 คลิ๊ก พร้อมกับ 2 Thread group แรก พบ Error ประมาณ 37.13% พบข้อมูลเข้าไปในระบบฐานข้อมูล 215 records 4) เมื่อทดสอบเพียง Thread group เดียว โดยเรียกเฉพาะ mysql_test357 ไม่พบ error ตอบมายัง Jmeter แต่จำนวนระเบียนในระบบมีเพียง 140 - 180 records ซึ่งตารางถูกตั้งค่าเป็น Engine = innodb พบว่า % การ error ของ Web server แม้จะเป็น 0% แต่ระเบียนข้อมูลอาจนำเข้าระบบฐานข้อมูล (Database server) ได้ไม่ครบ 5) เมื่อเปลี่ยนเป็น Engine = myisam พบว่า ข้อมูลเข้า 300 records ครบ แล้วได้ทำซ้ำหลายครั้งก็เข้าครั้งละ 300 records ได้ครบ แต่ถ้ามี user 1000 จะเข้าประมาณ 850 records 6) เปลี่ยนกลับไปใช้ Engine = innodb มี user 300 พบว่าได้เข้า 140 - 180 records เช่นเดิม เมื่อมี user 1000 พบว่าได้เข้า 650 records
วามแตกต่างของ innodb และ myisam พบว่า myisam มีความเร็วในการอ่านและเขียนสูงกว่า เนื่องจากเก็บข้อมูลในแฟ้มข้อมูล รองรับการอ่านข้อมูลพร้อมกันหลายตาราง เหมาะกับ Web application แต่ปัญหาที่พบบ่อยคือ index และ data corrupt จึงต้อง repair บ่อย โดยเฉพาะเมื่อใช้บน Windows ที่ Shutdown ไม่ถูกต้อง
ส่วน innodb รองรับ transaction ที่มีการอ่านเขียนข้อมูลพร้อม ๆ กัน และมีระบบ auto data recovery สามารถ lock ระดับ row ทำให้อ่านเขียนตารางเดียวกันพร้อมกันได้ ส่วนระบบ index นั้น แยกออกมาจากที่เก็บที่ใช้การ Hashing ทำให้ค้นหาข้อมูลได้รวดเร็วกว่า ข้อเสีย คือ ใช้หน่วยความจำมากกว่า ดังนั้นถ้ามีหน่วยความจำน้อยจะพบว่า myisam ทำงานได้เร็วกว่า เนื่องจาก innodb จะมีการอ่านเขียนใน buffer disk มากกว่า myisam
เปรียบเทียบ การดึงข้อมูลจากตารางจำนวนไม่กี่ตาราง และข้อมูลไม่มาก พบว่า myisam ทำงานได้เร็วกว่า แต่ถ้ามีจำนวนตาราง และข้อมูลในระดับหลักล้าน พบว่า innodb ทำงานได้ดีกว่า ด้วยเทคนิค Hashing ที่แยกระบบ index ไว้
การอ่านเขียนข้อมูลพร้อมกัน เนื่องจาก myisam ไม่ lock ระดับ row จึงไม่เหมาะกับงานอ่านเขียนบ่อย แต่ถ้าทำบ่อย ๆ ควรเลือก innodb เพื่อที่จะลดปัญหาความผิดพลาดในการเข้าถึงข้อมูลพร้อมกันบ่อย ๆ
แฟ้ม onecopycon.htm และ onembpy.htm
u1000.jmx ที่มีการตั้งค่าแล้ว
rspsocial
Thaiall.com