การ rename database ใน mysql

rename mysql database
rename mysql database

มีเพื่อนถามถึงการ rename database ใน mysql
ลองเข้าไปดูพบว่ามีคำสั่ง rename database อยู่จริง
พบว่าถูกเพิ่มเข้าไปในรุ่น 5.1.7 แต่ถูกลบออกในรุ่น 5.1.23
หากเรียกใช้ไม่ได้ ก็แสดงว่าคำสั่งใช้ไม่ได้ในรุ่นที่ท่านใช้อยู่
ถ้าต้องการ rename database มีคำแนะนำ 2 วิธี
1. ใช้ phpmyadmin คลิ๊กที่ database นั้น แล้วเลือก operations
มองหา Rename database to: แล้วกรอกชื่อใหม่ แล้วกดปุ่ม Go
2. ใช้ mysql command line
หากมี database ชื่อ test1 และต้องการเปลี่ยนเป็น test2
สามารถทำได้ดังนี้

>show databases;
>create database test2;
>use test1;
>show tables;
>rename table test1.a to test2.a;
>drop database test1;

ก็เป็นอันเรียบร้อย
https://dev.mysql.com/doc/refman/5.1/en/rename-database.html

ปรับ nginx และ application บน amazon cloud กับ google cloud

พักนี้ช่วยเพื่อนดู cloud ของ google กับ amazon
เพราะย้ายบริการระหว่าง cloud ทั้ง 2 ตัว ให้ทำงานกับ wordpress
แล้วพบปัญหาบางอย่างจาก google cloud เกี่ยวกับ
การรองรับ static file หลายร้อย gigabyte กับฐานข้อมูล 20 กว่า gigabyte
และ plug-in ของ wp โหด ๆ อีก 2 – 3 ตัว มีการรายงานพบปัญหา 502 ตลอด
http://aws.amazon.com และ http://cloud.google.com
เหตุที่บันทึกเรื่องราวไว้ เผื่อว่าเพื่อนกลับมาถามอีก จะได้ดำเนินการอีกครั้ง
มีประเด็นแบ่งปัน ดังนี้
1. มีปัญหาเรื่องการ redirect ไปหน้าอื่นของ wordpress ไม่ได้เลย
ต้องเข้าไปแก้ nginx.conf ในบรรทัดที่กำหนดว่า
try_files $uri $uri/ /index.html;
เป็น try_files $uri $uri/ /index.php?$args;
2. ส่วนการเข้า shell ในแต่ละ cloud ก็ต่างกันไป
สำหรับ google cloud ผมจะเข้า control panel แล้วคลิ๊ก ssh
ก็จะเข้า secure shell ได้เลย
แต่กับ amazon cloud เพื่อนจะส่งแฟ้ม .ppk ซึ่งเป็น private key file for authentication
แล้วแจ้ง user name กับ ip ให้ใช้โปรแกรม putty เข้า port 22 ไปจัดการระบบ
เข้าไปก็ใช้ sudo su เป็น root ได้เลย เรื่องนี้เป็นการเริ่มต้นใน cloud แต่ละตัวของผม
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
http://www.select2web.com/webservice/amazon-elastic-computer-clound-ec2-part-6-putty-login.html
3. จากนั้นก็ config ให้ ftp เข้าไปแล้วส่งแฟ้มผ่าน user ชื่อ bitnami ได้เลย
ซึ่ง google cloud มีเรื่องต้องกำหนดเกี่ยวกับ permission หลายจุด
แต่ที่เหมือนกันกับ amazon cloud คือ การทำ link มายัง home ของ user
ผมจะเข้าห้อง /home/bitnami
แล้วใช้คำสั่งว่า /home/bitnami# ln -s /opt/bitnami/nginx/html
พอเพื่อน ftp เข้ามาก็เห็นห้อง html แล้วโยนไฟล์เข้าไปใน html directory ได้เลย
4. เพื่อนอยากใช้ memcached ไม่ใช่ memcache บน wordpress
ก็ย้าย host มาหลายตัว จาก dreamhost.com เป็น google cloud และมาเป็น amazon cloud
ก็ได้ help ของ bitnami ช่วยไว้ เพราะ package ที่เลือกไว้ก็ใช้ bitnami
https://wiki.bitnami.com/Components/PHP?highlight=install+memcached#How_to_install_Memcached_module_using_libmemcached_library.3f
5. การ config ให้ใช้งาน php บน nginx ของแต่ละ server ก็ไม่เหมือนกัน
ของ amazon cloud ผลใช้ config ด้านล่างนี้

location ~ \.php$ {
root           html;
fastcgi_read_timeout 300;
fastcgi_pass   unix:/opt/bitnami/php/var/run/www.sock;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME $request_filename;
include        fastcgi_params;
}

6. รหัสผ่านของ root บน MySQL server แต่ละตัวก็จะไม่เหมือนกัน
ก็พบคำแนะนำว่าใช้รหัสผ่านคือ bitnami สำหรับกรณีแรก กรณีอื่นก็ตามรายละเอียดข้างล่าง
https://wiki.bitnami.com/Components/MySQL#How_to_connect_to_the_MySQL_database.3f
The default password for MySQL root user in Virtual Appliances and AMIs is “bitnami”
The default password for MySQL root user in BitNami Cloud Hosting is the same that you set in the administration panel.
The default password for MySQL root user in a BitNami Magento stack is “bitnami1”

7. ใช้ amazon cloud ระบบกำหนดให้เปิดบริการ apache เป็น default
แต่ถ้าจะเปิด nginx เป็น port 80 ด้วยก็ได้ แต่ต้อง config กันหน่อย
เข้าไป config แบบ manual ดูจาก https://wiki.bitnami.com/Components/Nginx
แล้วเข้าไปแก้แฟ้ม config เปลี่ยน port กันทีละแฟ้ม
/opt/bitnami/apache2/conf/httpd.conf จาก 80 เป็น 8088
/opt/bitnami/nginx/conf/nginx.conf จาก 8088 เป็น 80
/opt/bitnami/nginx/conf/nginx.conf จาก 1234 เป็น 80

แล้วสั่ง #service bitnami restart เท่านี้ nginx ก็ตื่นมาบริการผ่าน port 80 แล้ว
8. การ import ข้อมูลขนาดใหญ่หลาย GB เข้า mysql
ที่มองไว้มี 2 วิธี
วิธีที่ 1. ใช้ ftp ส่งแฟ้ม .txt เข้าไปใน server
แล้วใช้คำสั่ง mysqlimport แต่เหมาะกับ csv
http://www.thegeekstuff.com/2008/10/import-and-upload-data-to-mysql-tables-using-mysqlimport/
วิธีที่ 2. หลัง upload .sql ก็ใช้คำสั่งข้างล่างนี้
#mysql -u root -ppassword databasename < filename.sql
เป็นการประมวลผลฝั่ง server
ไม่ใช่ประมวลผลระหว่าง server กับ client
ด้วยการยิงเข้าไปทีละระเบียน เน็ตหลุดก็แย่เลย

aws dynamodb failures
aws dynamodb failures

อีกเรื่องที่น่าสนใจ
ระบบฐานข้อมูล DynamoDB ของ Amazon ล่มเมื่อเช้าวันอาทิตย์ที่ 20 ก.ย.58
ทำให้ Netflix.com เว็บบริการดูหนัง และอีกหลายเว็บไซต์มีปัญหา
โดยเฉพาะ US-East data center complex in Ashburn, Virgina.
http://fortune.com/2015/09/20/amazon-cloud-snafu/

แก้ปัญหา virtualbox ไม่ซ้ำจุดเดิมไม่ตก คาดว่า hd ไม่พอ

ubuntu บน virtualbox
ubuntu บน virtualbox

วันสองวันนี้พบปัญหากับเครื่องคอมพิวเตอร์หนึ่ง
ผมใช้ virtualbox และติดตั้ง ubuntu 14.04.3 ตามคำแนะนำของหัวหน้า
แต่ใช้งานไปสักพักจะพบว่า Oracle VM VirtualBox Manager has stopped working
สำหรับเครื่องอื่นไม่พบปัญหา พบแต่เครื่องที่ผมใช้อยู่ประจำ การแก้ไข
1. เปลี่ยนรุ่นของ virtualbox ระหว่าง 4.2 , 4.3 และ 5.0.2
2. ปิด antivirus
3. เปลี่ยน folder ที่เก็บ .vdi เพราะสร้าง vdi จากเครื่องอื่นมาใช้ในเครื่องนี้
4. พยายามทำให้ hd เหลือพื้นที่เพิ่มขึ้น จาก 4 GB เป็น 7 GB
ณ ตอนนี้ก็ยังแก้ไขไม่ได้ คาดว่ากำหนด HD แบบ dynamic ไว้ 8 GB
แต่ HD เหลือจริงไม่ถึง 8 GB ทั้งที่การใช้งานจริงกินพื้นที่ประมาณ 1.5 GB เท่านั้น
.. เล่าปัญหาสู่กันฟังครับ แต่กับเครื่องอื่นไม่พบปัญหา

+ http://www.ubuntu.com/download/desktop

+ https://www.virtualbox.org/wiki/Downloads

ช่วยเพื่อน config ให้ใช้งาน ftp ใน google cloud ได้ ครั้งที่สอง

google cloud
google cloud

มีโอกาสช่วยเพื่อน config Linux ซึ่งอยู่ใน google cloud
หรือ http://cloud.google.com ให้สามารถใช้ ftp
สำหรับ upload script เข้าไปในระบบ
ครั้งนี้เป็นครั้งที่สอง ดีกว่าครั้งแรก เพราะใช้ user bitnami ที่มีอยู่
แต่ครั้งแรกคลำทางไม่ถูก สร้าง user ใหม่ เข้าไปครอบ folder เดิมเลย
.. แต่ก็พอใช้งานได้ครับ สรุปว่าต้องใช้ bitnami ถึงจะถูกแนวที่เขากำหนดไว้

ขั้นตอนเริ่มต้นก่อนเข้า ssh (Secure shell)
1. เข้า Compute, Compute Engine, VM instances
2. พบ instance ที่สร้างขึ้น ของเพื่อนผมเป็น nginxstack
3. ในบรรทัดนั้นมีคำว่า default ใต้ network ก็เข้าไป
4. เพิ่ม default-allow-ftp
มี Allowed protocols / ports เป็น tcp:21
มี Source tag/ IP range เป็น 0.0.0.0/0 เพื่ออนุญาตจากที่ใด เฉพาะ port ที่กำหนด
มี Target Tags เป็น Apply to all targets
ขั้นตอนการเข้าจัดการด้วย secure shell
#sudo su
#cd /etc
#vi vsftpd.allowed_users
เปลี่ยนจากผู้ใช้ชื่อ bitnamiftp เป็น bitnami
#vi vsftpd.conf
เพิ่ม # หน้า listen_address=127.0.0.1
#cd /etc/init.d
#./vsftpd restart
#passwd bitnami
#ln -s /opt/bitnami/nginx/html html
#cd /opt/bitnami/nginx/conf/bitnami
#vi bitnami.conf
แล้วเติม index.php ไปหลัง index
เดิม index index.html index.htm;
เป็น index index.php index.html index.htm;
#/etc/init.d/bitnami restart

เพื่อให้แน่ใจผม upload index.php มี phpinfo() เข้าไป
เพื่อให้เห็นว่า php ทำงาน จะได้ติดตั้ง app ต่าง ๆ ได้

การซ้อนภาพหลายคนในภาพเดียวกัน ด้วย paint

two in one by paint
two in one by paint

เคยเห็นภาพซ้อนคนเดียวกันในภาพใบเดียว และมีคำแนะนำมาว่าใช้ photoshop
บางทีผมก็ไม่ได้ใช้ photoshop นะครับ เพราะโปรแกรมตัวใหญ่ทำงานเล็ก ๆ โปรแกรมเล็ก ๆ ก็ทำได้
ปกติจะใช้โปรแกรม paint เพราะโหลดขึ้นมาได้เร็ว และทำงานนี้ได้ไม่ยากครับ
เพียงแค่ cut and paste ก็ทำได้แล้ว
และ paint มีใน microsoft windows

การใช้ paint บ่อย ๆ จะทำให้การจัดการภาพเบื้องต้น
ทำได้ง่าย และรวดเร็ว .. โดยไม่ต้องใช้โปรแกรมครบเครื่องอย่าง photoshop

ภาพเห็นหน้า อ.ธวัชชัย แสนชมภู
https://www.facebook.com/photo.php?fbid=10153509593883895&set=oa.1002024449863425
ภาพเห็นหลัง อ.ธวัชชัย แสนชมภู
https://www.facebook.com/photo.php?fbid=10153509594013895&set=oa.1002024449863425

บริการรับ-ส่งอีเมลของ Mercury/32 v.4.6 from localhost

mercury mail server on xampp that work with PHP
mercury mail server on xampp that work with PHP

การ config ให้เป็นบริการแบบสองทางคือ รับ กับ ส่ง
ผ่าน localhost บน winxp โดยใช้ Outlook Express

1. เปิดบริการ
เข้าโปรแกรม xampp control panel แล้วเปิดบริการ Mercury
จะพบว่า port 25 กับ 110 เปิดให้บริการแล้ว ตรวจด้วย netstat -na ใน DOS
2. สร้าง user ของ e-mail
เข้า admin ของ Mercury/32 v.4.6 ใน xampp control panel
แล้วเข้า Configuration, Manage Local User…
เพิ่มรหัสผู้ใช้อีเมล โดยกำหนดให้ User:test
Personal Name:test และ Mail Password:test
3. ทดสอบกับ e-mail client
เปิด Outlook Express ครั้งแรก ต้องกรอกข้อมูลต่าง ๆ
Display name: test และ E-mail address: test@localhost
Incoming mail: 127.0.0.1 และ Outgoing mail: 127.0.0.1
Account name: test และ Password:test
4. ทดสอบระบบรับ-ส่ง
สั่งเขียนอีเมลใน Outlook Express ให้กด Create Mail
ส่งถึง test@localhost และให้ subject กับ message เป็น “hello world”
เมื่อสั่ง Send/Recv ก็จะพบอีเมลใหม่เข้ามาใน inbox
5. เขียน code ภาษา php
ให้โปรแกรมที่เขียนขึ้นมาทำงานบน Apache ที่จัดการโดย XAMPP
<?php
mail(“test@localhost”,”hello world”,”1\n2\n”,”From: admin@localhost\r\n”);
?>
สร้างแฟ้ม x.php วางใน c:\xampp\htdocs แล้วเปิดเว็บ http://localhost/x.php
พบว่าระบบไม่ส่งอีเมลออกไป ต้องทำข้อที่เหลือก่อน โดยแก้ไข sendmail.ini และ php.ini
6. แก้ไข sendmail.ini
เปิด c:\xampp\sendmail\sendmail.ini ขึ้นมาแก้ไข
จาก smtp_server=mail.mydomain.com
เป็น smtp_server=localhost
7. แก้ไข php.ini
เปิด c:\xampp\php\php.ini ขึ้นมาแก้ไข
จาก ;sendmail_path = “\”c:\xampp\sendmail\sendmail.exe\” -t”
จาก sendmail_path = “c:\xampp\mailtodisk\mailtodisk.exe”
เป็น sendmail_path = “\”c:\xampp\sendmail\sendmail.exe\” -t”
เป็น ;sendmail_path = “c:\xampp\mailtodisk\mailtodisk.exe”
8. เมื่อ restart apache ก็จะส่งอีเมลได้แล้ว
สั่ง stop และ start apache ใหม่ แล้วเรียก x.php ผ่าน browser
ในการเรียกแต่ละครั้ง ก็จะส่งอีเมลจาก admin@localhost
แล้วพบอีเมลที่ส่งไปเข้า outlookexpress เรียบร้อยดี

การเข้า ssh บน google cloud เพื่อจัดการเครื่องบริการ

php-fpm
php-fpm

เมื่อ sign in เข้าไปแล้วก็จะพบกับคำว่า My console
ซึ่งจะต้องเลือกว่าเข้า Project ไหนที่เรากำลังจัดการอยู่ เมื่อเลือกแล้วก็จะมีตัวเลือก

Overview
Permissions
APIs & auth
Monitoring
Source Code
Deploy & Manage
[Compute]
Networking
Storage
Big Data

ในการเข้าจัดการเครื่องที่เลือกได้
เข้า Compute จะพบ App Engine, Compute Engine และ Container Engine
ซึ่งกรณีนี้เลือก Compute Engine ก็จะพบอีกมาก ผมเลือก VM instances ที่สร้างไว้
ก็จะเป็นการสร้าง instance ที่กำหนดว่าใช้ server แบบไหน ภาษาอะไร
งานที่ผมเข้าไปจัดการ Linux :Debian บน AMD64 + Nginx ก็จะใช้ SSH ที่อยู่หลัง instance ตัวที่สร้างขึ้น

$sudo su
#cd /opt/bitnami/nginx/conf/bitnami

พบว่า index ใน location ไม่ได้กำหนด index.php ก็ต้องเพิ่มเข้าไป
เพราะที่มีนั้น มีแต่ index.html กับ index.htm ไม่ใส่จะเป็นปัญหากับ wordpress

พบปัญหา 502 bad gateway แล้วก็พบคำแนะนำ
ใน http://serverfault.com/questions/457911/nginx-php-fpm-502-bad-gateway
จากการตรวจสอบ พบว่าไม่สอดคล้องกับสิ่งที่พบใน google cloud และไม่ใช่วิธีแก้ปัญหา
จึงไม่ได้ปรับแฟ้ม bitnami.conf ที่อยู่ใน google cloud

ตรวจสอบว่า php-fpm ทำงานอยู่ด้วย #ps -aux|grep php พบว่าทำงานอยู่
ตรวจสอบด้วย phpinfo() ก็บพว่า php-fpm ทำงานอยู่
ใน #tail /opt/bitnami/nginx/logs/access.log แต่ไม่ได้แสดงว่า php-fpm ทำงานด้วยรึเปล่า
พบว่า /opt/bitnami/nginx/conf/bitnami/phpfastcgi.conf มีการ config การทำงานของ php-fpm เรียบร้อย
และ bitnami.conf ก็ include แฟ้ม phpfastcgi.conf มาเรียบร้อย
สรุปว่า nginx เรียกใช้ phpfastcgi หรือ php-fpm แน่นอน
เพราะเวลามีปัญหากับ php ใน error.log จะมีข้อความ
เช่น FastCGI send in stderr: “PHP Message: WordPress database error Table ‘xxx’ does’t exist for query SELECT …

สตาร์ท httpd ไม่ขึ้น ทำอย่างไรดี

httpd start ไม่ขึ้น
httpd start ไม่ขึ้น

วันนี้ (15 ก.ค.58) คุณ ต. ถามพี่ ส. จากเครือ น. ว่าทำไม
สตาร์ท httpd ไม่ขึ้น แล้วพี่เขาตอบมาว่า
ดูจากแฟ้ม nss_error_log
พบว่า Certificate not verified: ‘Server-Cert’

เมื่อใช้ [root]# certutil -d /etc/httpd/alias -L -n Server-Cert
พบช่วงเวลาที่ใช้งานได้ Validity:
Not Before: Sun Jun 19 21:28:36 2011
Not After : Fri Jun 19 21:28:36 2015

แล้วแนะนำว่ามีวิธีแก้ไข 2 วิธี
วิธีที่ 1. เพิ่มคำว่า NSSEnforceValidCerts off
ในแฟ้ม /etc/httpd/conf.d/nss.conf
วิธีที่ 2. ถอน mod_nss แล้วติดตั้งใหม่ เพื่อให้ได้ Server-Cert ใหม่
#service httpd stop
#rm /etc/httpd/conf.d/nss.conf
#rpm -e mod_nss
#rm /etc/httpd/alias/*
#yum install mod_nss
#service httpd start
ซึ่งวิธีที่ 2 นี้ทำไม่ได้ในเครื่องกับทุกเครื่องนะครับ ทำได้เฉพาะเครื่องที่ลงทะเบียนกับ RHN

มีคำแนะนำที่ https://bugzilla.redhat.com/show_bug.cgi?id=711085

the system is not registered
the system is not registered

ปั่นเพื่อแม่ (Bike for mom) ได้รับความสนใจเกินกว่าความคาดหมายจนล่มในช่วงแรก

ปั่นเพื่อแม่ (Bike for mom) ได้รับความสนใจเกินกว่าความคาดหมายจนล่มในช่วงแรก
ปั่นเพื่อแม่ (Bike for mom) ได้รับความสนใจเกินกว่าความคาดหมายจนล่มในช่วงแรก

ข้อความจาก thaibike.net ว่า
ผู้สนใจร่วมเป็นหนึ่งในเหตุการณ์ประวัติศาสตร์ “BIKE FOR MOM ปั่นเพื่อแม่
เพียง 15 นาทีมีผู้สนใจเข้าร่วมลงทะเบียนเป็นจำนวนมาก
ส่งผลให้เว็บไซต์มีปัญหาขัดข้อง และมีการเพิ่มเครื่องบริการอีกหลายตัวเพื่อแก้ปัญหา
ประชาชนที่สนใจเข้าร่วมกิจกรรม ในกรุงเทพ เต็มจำนวนแล้ว 40,000 คน
เช็คที่เหลือแต่ละจังหวัด ได้ที่ศาลากลางจังหวัด

https://www.youtube.com/watch?v=UDnLVEanwnM

ซึ่งผมก็จะร่วมกิจกรรมที่ลำปางด้วย ได้เข้าเว็บไซต์ http://bikemom2015.moi.go.th
หรือ http://www.bikeformom2015.com
เมื่อวันที่ 1 กรกฎาคม 2558 พบว่าหลังเปิดระบบให้ลงทะเบียนไม่กี่นาที ระบบก็ล่ม ลงทะเบียนไม่ได้
แต่ปัจจุบันลงทะเบียนได้แล้ว และเปิดไปถึง 9 สิงหาคม 2558 ปั่นร่วมกันอาทิตย์ที่ 16 สิงหาคม 2558
http://www.matichon.co.th/news_detail.php?newsid=1435733620
แล้ววันแรกพบภาพที่คุณ krisda ถ่ายจากทีวีว่าออกข่าวช่อง 3 ด้วย
โพสต์ในกลุ่ม “ลำปาง นครแห่งจักรยาน” ซึ่งการลงทะเบียนออนไลน์เป็นเพียงช่องทางหนึ่ง
อีกช่องทาง คือ การไปลงทะเบียนที่ศาลากลาง ของแต่ละจังหวัด
https://www.facebook.com/groups/723715197696029/permalink/877043582363189/
ส่วน ข่าวช่อง 7 ก็มีที่ http://news.ch7.com/detail/130336/

ที่น่าสนใจว่าเว็บไซต์ล้มนั้น หรือทำไมเว็บไซต์ช้า หรือล้ม
มีคำอธิบายวิธีป้องกันที่ blog.levelup.in.th โดยคุณ heha ซึ่งสรุปไว้ดังนี้
http://blog.levelup.in.th/2011/01/31/why-do-your-website-slow-or-crash%E0%B8%97%E0%B8%B3%E0%B9%84%E0%B8%A1%E0%B9%80%E0%B8%A7%E0%B9%87%E0%B8%9A%E0%B9%84%E0%B8%8B%E0%B8%95%E0%B9%8C%E0%B8%82%E0%B8%AD%E0%B8%87%E0%B8%84%E0%B8%B8%E0%B8%93/
Database ตอบสนองช้า
1. Database ไม่ได้ใส่ index key ต้องทำกันตั้งแต่ตอนออกแบบระบบฐานข้อมูลกันเลย
2. จำนวนคิวรี่ (Query) ต่อหน้ามีมากเกินไป ก็เป็นการออกแบบเว็บเพจ
3. เว็บไซต์ไม่มีการใช้ระบบ Cache อันนี้เป็นเรื่องการ config server
อยากรู้ว่าใช้ระบบ cache รึเปล่าใช้บริการได้ที่
https://developers.google.com/speed/pagespeed/insights/
ลองตรวจของ จังหวัดในประเทศไทยดูครับ มักพบปัญหา Leverage browser caching
เว็บไซต์ของผมก็มีปัญหา ยังไม่ได้ตามไปแก้ไขเลย
4. Table ถูก Lock บ่อย เนื่องจาก update หรือ insert บ่อย
และเปลี่ยนเป็น innodb แทน myisam เพราะ innodb จะ lock เฉพาะ row
ไม่ lock ทั้ง table จึงช่วยเรื่องความเร็วได้มาก

CPU Server ขึ้นสูง
1. Script php มีปัญหา ไม่ optimize code ให้ดี ไม่ clear ตัวแปรเมื่อเลิกใช้
วนลูปที่ไม่จำเป็น หรือสร้าง object แล้วไม่ใช้ หรือเขียน algorithm ไม่ดี
2. process กิน memory มากไป
เช็คตัวแปรต่าง ๆ และตั้งค่าให้เหมาะสม สำหรับ web server มีให้ตั้งเยอะ

Server Crash บ่อย
1. ลด MaxClients ใน apache config ลง จำกัดจำนวนผู้ใช้ ป้องกัน server ล้ม
2. ตั้งเวลา reboot เครื่อง หากมีเหตุผลที่ตอบได้ว่าจำเป็น
3. เพิ่ม max_connections ของ mysql ก็น่าจะรองรับได้เพิ่มขึ้น
4. อัพเกรดทุกอย่างที่คิดว่าน้อย เช่น cpu, memory, harddisk หรือ bandwidth

ทดสอบการทำงานกับแฟ้มขนาด 1 ล้านไบท์

หน้าตาเว็บเพจที่ทดสอบ
หน้าตาเว็บเพจที่ทดสอบ

ได้มีการเขียนเว็บเพจ และใช้ java script มา 4 เว็บเพจ ทุกเว็บเพจมีขนาด 1 ล้านไบท์เท่ากัน
เพื่อทดสอบการใช้เวลา download ของ script แต่ละเว็บเพจ
ทดสอบใน firefox, chrome และ ie มีประเด็นที่สนใจดังนี้
1. เปิด และปิด script ในเว็บเพจ มีผลอย่างไร
2. การ refresh ของแต่ละ browser เมื่อใช้ no-cache แตกต่างกันหรือไม่

โดยใช้ javascript ในการประมวลผลเวลาของแต่ละหน้า ผลการทดสอบที่น่าสนใจ ดังนี้

การทดสอบที่ 1 พบว่า การส่งค่าผ่าน url จะทำให้ load เว็บเพจทั้งหน้าใหม่
เปิดเว็บเพจ http://www.thaiall.com/html/onemillion.htm ครั้งแรก
ใช้เวลาไป 6186 millseconds
เมื่อคลิ๊กลิงค์ Reload แบบส่ง get ใหม่ ใช้เวลาไป 9784 milliseconds
แต่ถ้า Refresh ผ่าน browser จะเรียก script เดิมจากใน cache ใช้เวลา 23 milliseconds

การทดสอบที่ 2 พบว่า การทำงานใน script เดียว ตั้งแต่ต้นถึงท้าย script จะใช้เวลาน้อยมาก
เปิดเว็บเพจ http://www.thaiall.com/html/onemillionv1.htm ครั้งแรก
ใช้เวลาไป 4 millseconds ซึ่งไม่ได้สะท้อนเวลาจริง
เมื่อเปลี่ยนเป็น Reload หรือ Refresh แบบใด ก็ใช้เวลาเท่าเดิม
เพราะทั้งเว็บเพจมีคำว่า script คำเดียว ทุกอย่างอยู่ใน script เดียว หรือ thread เดียว
ไม่มีการเปิดปิด tag script หลายครั้ง เป็นการทำงานใน thread เดียวกัน
จึงได้เวลาจากการประมวลผลตั้งแต่ต้น thread ถึงท้าย thread ไม่แตกต่างกันมากนัก

การทดสอบที่ 3 พบว่า เป็นการทดสอบที่ยืนยันผลของการทดสอบที่ 1
เปิดเว็บเพจ http://www.thaiall.com/html/onemillionv2.htm ครั้งแรก
ใช้เวลาไป 6077 millseconds
ใช้เทคนิคว่า การเปิด tag script ต้นแฟ้ม และปิดทันที เพื่อบันทึกเวลาเริ่มต้น
แล้วเปิด tag script ท้ายแฟ้ม เพื่อประมวลเวลา และแสดงผล
จะแสดงเวลาที่ใช้ ในการ load เว็บเพจ ใกล้เคียงกับความเป็นจริง
คือ ใช้เวลาประมาณ 6 วินาที หรือ 6000 millisecond ต่อการ load หนึ่งครั้ง
แต่ถ้าโหลดจากใน cache ของ browser ก็จะใช้เวลาน้อยมาก คือ ไม่กี่ millisecond

การทดสอบที่ 4 พบว่า เป็นการทดสอบโดยเพิ่ม no-cache ที่ header
ว่า <meta http-equiv=”cache-control” content=”no-cache”>
เปิดเว็บเพจ http://www.thaiall.com/html/onemillionv3.htm ครั้งแรก
ใช้เวลาไป 9562 millseconds
ให้ผลเหมือนกับกรณีทดสอบที่ 1 เมื่อทดสอบบน firefox และ chrome
แต่บน ie (internet explorer) 11
การ refresh ของ browser ใช้เวลา 3776 milliseconds หรือประมาณนี้
สรุปว่า ie ยอมรับคุณสมบัติ no-cache ทำให้การ refresh จะ load ข้อมูลมาใหม่ทุกครั้ง
และการ force reload ด้วยการกด Ctrl-F5 สามารถใช้ได้กับทุก browser ที่ทดสอบ

สรุปว่า การเปิดปิด script หลายครั้ง มีผลแตกต่างกับการเปิดครั้งเดียว
การนำไปใช้ให้เกิดประโยชน์ ขึ้นอยู่กับการออกแบบเว็บเพจ
และคุณสมบัติ no-cache ก็ใช้ได้กับบาง browser เท่านั้น ไม่ควรไว้วางใจ
และการโหลดภาพไม่มีผลต่อเวลาในการโหลดเว็บเพจ เพราะแยกส่วนกันชัดเจน