wordpress

Tối ưu trang WordPress chạy với VestaCP

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, VCCloud 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,...

Ảnh 1.

Tiếp theo chúng ta đến mục cron tab. Ở đây, chúng ta sẽ tắt những crontab không cần thiết đi. Ví dụ, như ở đây mình tắt đi crontab chạy script backup user, vì đối với mình nó không cần thiết.
Ảnh 2.

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.

Ảnh 3.

HTTP Client khởi tạo một TCP Connection đến HTTP Server [ Quá trình bắt tay 3 bước của TCP Protocol ]. Sau đó nó sẽ gửi Request tới Server và nhận về Response. Cuối cùng là Server đóng kết nối TCP lại, giải phóng Resource. Phương thức hoạt động ở trên không hiệu quả đối với những site lớn có nhiều thành phần như js, css, image,… và được truy cập qua một đường truyền chậm. Cứ mỗi lần kết nối là phải tạo TCP Connection, muốn ngắt kết nối thì cả hai bên cùng ngắt và cứ mỗi request, message thì phải khởi tạo 1 lần như vậy. Do vậy nên nó sẽ làm giảm performance của Website.

Để 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.

Ảnh 4.

Mặc định thì VestaCP không bật tính năng này do nếu có một số lượng lớn Client sử dụng HTTP Keepalive và Webserver có giới hạn concurrent limit connections thì lúc đó Performance của website bị giảm xuống nhanh chóng khi giới hạn này được chạm tới.

Ở đâ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 :D

Download script benchmark :

# wget -O /usr/src/mysqltuner.pl mysqltuner.pl

Khởi chạy script:

# perl /usr/src/mysqltuner.pl

Kết quả:

Ảnh 8.

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/home/admin/conf/web/nginx.conf. Ví dụ, dưới đây là cấu hình ở /home/admin/conf/web/nginx.conf cho 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.

Ảnh 9.

Cài đặt Opcode cache

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.

Ảnh 11.

Kiểm tra lại và sau đó restart dịch vụ của apache:
Ảnh 12.

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!

>> Tham khảo thêm: Configuration Management là gì ?.

Registration Login
Sign in with social account
or
Lost your Password?
Registration Login
Sign in with social account
or
A password will be send on your post
Registration Login
Registration