Trong quá trình làm việc, do tính chất công việc nên mình đã tiếp xúc kha khá các server sử dụng VestaCP làm Control Panel và trên nền tảng WordPress. Đặc điểm chung của các server này là khá chậm,hiệu suất không cao và thường bị quá tải RAM hay CPU.
Trong bài viết này, mình sẽ đưa ra một số phương án để tối ưu trang WordPress chạy với VestaCP.
Lược bỏ một số tính năng của vestaCP
Vào trang quản trị VestaCP, tab Server, chúng ta stop đi những dịch vụ mà chúng ta không dùng, ở đây mình không dùng mail server và DNS server nên mình sẽ stop chúng và các dịch vụ liên quan như spamassasin,…
Tối ưu hóa Apache với Keepalive Connection
HTTP Keepalive là một chức năng thuộc về performance của website rất quan trọng, nó làm giảm đi độ trễ của Page Load và giúp cho Website load nhanh hơn.
Để giải quyết vấn đề trên thì giao thức HTTP sử dụng một process gọi là “Keepalive” Connections để giữ TCP connection giữa Client và Server cho đến khi hoàn tất HTTP transaction. Nếu Client muốn tiếp tục một HTTP transaction khác nữa thì nó sử dụng tiếp process keepalive connection mà không cần khởi tạo lại TCP Connection.
Ở đây mình sẽ bật tính năng này lên để tăng hiệu năng của website:
sed -i '/^Timeout/c Timeout 7' /etc/apache2/apache2.conf # sed -i '/^KeepAlive Off/c KeepAlive On' /etc/apache2/apache2.conf # sed -i '/^KeepAliveTimeout/c KeepAliveTimeout 5' /etc/apache2/apache2.conf # service apache2 restart
Tối ưu cấu hình cho MySQL
Với cấu hình MySQL thì mình cũng không có nhiều kinh nghiệm cho lắm, thông thường thì mình sẽ chạy benchmark cho nó và chỉnh sửa cấu hình my.conf theo recommend của nó. Theo mình thì cách tốt nhất vẫn là hiểu rõ thông số cấu hình của từng dòng trong mysql (nó là gì? , nó là để làm gì?, cách dùng nó ntn?) thì tốt hơn là dùng scirpt 😀
Download script benchmark :
# wget -O /usr/src/mysqltuner.pl mysqltuner.pl
Khởi chạy script:
# perl /usr/src/mysqltuner.pl
Kết quả:
Tối ưu hóa cấu hình NGINX
Mặc định, khi cài VestaCP thì nó sẽ sử dụng NGINX làm reverse proxy. Tại sao lại như thế? Bởi vì NGINX xử lý nhanh hơn, linh hoạt hơn (sử dụng trong nhiều mục đích khác nhau) và nhẹ hơn Apache rất nhiều..
VestaCP sẽ sử dụng Apache để xử lý PHP thông qua module mod_php của nó, còn NGINX sẽ có nhiệm vụ đọc dữ liệu nhận được, xử lý các file tĩnh, cache (NGINX làm rất tốt trong việc xử lý cache) . Nó chạy Apache ở cổng 8080 (trình duyệt sẽ không tự động đọc cổng này ), sử dụng cổng 80 cho NGINX, lúc này NGINX sẽ tự động gửi các truy vấn từ các file có đuôi mở rộng là .php đến cổng của Apache cho nó xử lý. Sau đó, Apache trả dữ liệu lại cho NGINX, rồi sau cùng, NGINX gửi cho người dùng đọc.
Ở VestaCP, sẽ có 2 file để chỉnh sửa cấu hình config, ở /etc/nginx/nginx.conf và /home/admin/conf/web/nginx.conf. Ví dụ, dưới đây là cấu hình ở /home/admin/conf/web/nginx.confcho phép cache các file tĩnh ở trên trình duyệt của máy client và tắt accept_log để giảm I/O.
WordPress được viết bằng PHP. PHP là một scripting language, khi có một request đến Web Service thì nó phải thông dịch lại script PHP này để trả về kết quả xử lý cho người dùng. Nếu có nhiều request yêu cầu file PHP này thì nó vẫn cứ phải làm công việc thông dịch script PHP và gửi kết quả trả về cho người dùng. Để hạn chế quá trình này và làm tăng Resource cho server thì giải pháp lúc này là Opcode cache. Opcode cache nó lưu lại kết quả thông dịch script PHP. Có thể lưu lại vào RAM hoặc là trên ổ cứng. Khi có request yêu cầu file PHP này thì nó sẽ vào cache lấy ra sử dụng.
Ở đây mình sẽ cài đặt Zend Optimize Plus. Đây là một Opcode cache phù hợp với WordPress.
Tiến hành cài đặt Zend Optimize Plus :
#wget https://github.com/zendtech/ZendOptimizerPlus/archive/master.zip # unzip master.zip # cd ZendOptimizerPlus-master/ # phpize ## phpize được sử dụng để chuẩn bị môi trường build các module extension của PHP #./configure --with-php-config=/usr/local/vesta/php/bin/php-config # make # make install Installing shared extensions: /usr/local/vesta/php/lib/php/extensions/no-debug-non-zts-20100525/
Thêm những dòng sau ở file config php.ini.
Trên đây là những cấu hình tối đa hiệu năng trang WordPress của bạn một cách hiệu quả. Nếu website có lượng truy cập lớn, bạn có thể tham khảo thêm 1 số cách khác như là sử dụng memcached, redis,.. Chúc bạn thành công!