Hiện tại có rất nhiều hướng dẫn cấu hình để có thể tạo được VPS chịu tải lớn trên mạng thông qua load balancing, optimize các services… Hôm nay, mình sẽ hướng dẫn các bạn một cách khác sử dụng kết hợp HocVPS Script, Zend Opcache, Memcache để có thể xây dựng được VPS có thể chịu được hàng nghìn người online cùng lúc.

Mình đã thử cài đặt VPS ở Vultr với gói 0.022$/giờ ~ 15$/tháng, 2 CPU, 2GB RAM thấy có lúc online đến 4k (theo thống kê Google Analytics) vẫn chạy ổn. Tiếc là ko có điều kiện test lâu dài xem thực tế sức chịu đựng của VPS như thế nào.

Hình ảnh chụp lúc online 4.363 người ngày 12/11/2014, đo bằng Google Analytics, site tin tức bằng WordPress:

43633

Số lượng người online nhiều như vậy nhưng chỉ sử dụng hết 20% CPU, RAM còn thừa rất nhiều, nếu hoạt động hết công suất không biết lên đến mấy k online nữa 🙂

Học VPS có dịch vụ cài đặt và tối ưu VPS trọn gói, chuyên nghiệp, nhanh gọn. Nếu bạn không có nhiều kinh nghiệm với VPS, hoặc không muốn tốn nhiều thời gian cài đặt, hãy sử dụng dịch vụ.

1. Cài đặt HocVPS Script

hocvps script

Sử dụng HocVPS Script bạn sẽ được tự động cài đặt và tối ưu LEMP server trên CentOS. Trước khi tiến hành cài đặt, nhớ chọn hệ điều hành CentOS, location Japan ở Vultr để có tốc độ về Việt Nam nhanh nhất.

Ngoài ra bạn nên tạo thêm swap 1GB cho VPS (thường swap gấp đôi hoặc ~ RAM)

Các bước cài đặt thực hiện tương tự như hướng dẫn cài đặt HocVPS Script.

2. Cài đặt Zend Opcache

Zend OPcache

Mục đích sử dụng Zend OPcache để tối ưu và tăng tốc PHP, điều này đặc biệt quan trọng và bắt buộc phải cài với những VPS có số lượng người online lớn. Qua đó giảm thiểu hoạt động của CPU và giảm đáng kể số lượng RAM mà PHP sử dụng.

HocvPS Script đã tự động cài đặt Zend OPcache giúp bạn, giờ chỉ cần điều chỉnh lại các tham số cho phù hợp với nhu cầu sử dụng của bạn mà thôi.

Bạn hãy theo dõi tình hình thực tế khi chạy VPS với 1 trình web viewer, ví dụ opcache-gui (server cài HocVPS thì đường dẫn là http://domain.com:port/op.php). Tăng hoặc giảm bộ nhớ làm sao giữ cho memory usage <= 70% là ổn, bộ nhớ còn trống sẽ được dùng cho các việc khác.

Lưu ý Bước tiếp theo bạn có thể dùng plugin cache như WP Super Cache hoặc Memcached với W3 Total Cache (bước 3 và 4). Nên thử với WP Super Cache trước, vì đa phần các website chỉ cần plugin này là đủ, mà cài đặt lại đơn giản.

3. Cài đặt Memcached

VPS-Memcached-WP-Site-Speed

Memcached mình sử dụng để cache query database, object và page cache. Thông thường, các dữ liệu trên thường được cache bằng cách sử dụng disk, nhưng memcached lưu thông tin trên RAM nên hiệu suất và tốc độ được tăng lên rất nhiều.

Các bạn thực hiện theo như hướng dẫn cài đặt memcached. Trong phần Cấu hình Memcached lưu ý tăng thông số MAXCONN="1024" thành MAXCONN="10240"

nano /etc/sysconfig/memcached

PORT="11211"
USER="memcached"
MAXCONN="10240"
CACHESIZE="64"
OPTIONS=""

Tương tự như Zend OPcache bên trên, bạn nên sử dụng tool theo dõi phpMemcachedAdmin, điều chỉnh đảm bảo cho bộ nhớ <= 70%, tránh việc thừa quá nhiều RAM (như blog Học VPS do chỉ là WordPress nên dành 64MB RAM cho memcached).

Ở bước cuối bạn không cần thiết phải cài plugin WP-FFPC cho WordPress vì chúng ta sẽ sử dụng plugin W3 Total Cache như hướng dẫn bên dưới.

4. Cấu hình W3 Total Cache

Để đảm bảo mọi thứ hoạt động trơn tru, các bạn hãy sử dụng plugin W3 Total Cache. Bình thường mình vẫn hay sử dụng plugin WP Super Cache vì nó đơn giản, dễ dùng và cũng rất hiệu quả (Canh Me hiện đang dùng). Tuy nhiên khi đã sử dụng đến Memcached, bạn bắt buộc phải chuyển qua W3 Total Cache hoặc WP-FFPC.

W3 Total Cache

Sau khi cài đặt xong plugin, các bạn hãy kích hoạt Page Cache, Database cache và Object Cache sử dụng method là Memcached. Ngoài ra, cũng cần kích hoạt Browser Cache và CDN nếu có thể.

Hãy nhấn vào từng mục để có thể cấu hình chi tiết cụ thể hơn.

Hi vọng, với bài viết này các bạn sẽ có thể tự build được 1 VPS chịu tải tốt. Đừng quên để lại comment bên dưới thông báo kết quả bạn đạt được sau khi thực hiện nhé.

Tagged:

756 Comments

  1. Leina 8 comment

    Bạn ơi mình hỏi ở trên mà ko thấy giúp, hic!
    Có cách nào giảm sự hoạt động của mysql ko nhỉ, vì site mình mysql hoạt động lúc nào cpu cũng cao ngất ngưởng dẫn đến site rất chậm!
    Mình đang sử dụng hocvps với WP Rocket!
    http://prnt.sc/ef1e99

    1. Việt Phương Moderator

      Chỉ có tối ưu MySQL thôi bạn à. bạn có cấu hình gì đặc biệt về mảng query database không hay hoàn toàn mặc định? Bạn có cài kết hợp Memcached với WP Rocket không? MySQL thì có thể dùng MySQLTuner để tối ưu.
      Hoặc trong trường hợp database bạn quá lớn thì bạn nên cân nhắc nâng cấp cấu hình

      1. Leina 8 comment

        Trong wp rocket thì chỉ có dọn dẹp database thôi thì mình dọn rồi, site có tầm ~8k bài viết, còn lại để mặc định, memcached mình ko cài, dung lượng tổng database chỉ tầm gần 300MB thôi, bạn có giải pháp nào hay bài hướng dẫn nào tối ưu database ko ạ?

          1. Leina 8 comment

            Mong muốn các bạn có bài viết chi tiết cài đặt và cấu hình MySQLTuner với hocvps quá 😀

          2. Leina 8 comment

            Bạn ơi, mình đang tìm hiểu cái MySQLTuner để tối ưu database, giờ muốn chỉnh file my.cnf mà khi mở lên vi /etc/mysql/my.cnf thì file ko có nội dung gì là sao nhỉ?
            hay là hocvps để file này ở chỗ khác ?

      2. Quang Trung 6 comment

        Em cài hocvps script rồi, có cần làm lại các bước trên không ạ ?

  2. Leina 8 comment

    Mình sử dụng MySQLTuner và cho kết quả thế này:
    Variables to adjust:
    query_cache_type (=0)
    tmp_table_size (> 64M)
    max_heap_table_size (> 64M)
    performance_schema = OFF disable PFS
    innodb_log_file_size * innodb_log_files_in_group should be equals to 1/4 of buffer pool size (=448M) if possible.
    VPS là 1 core, 2GB ram, sao xem trong my.cnf thì query_cache_type là ON chứ ko phải là =0, tmp_table_size và max_heap_table_size liệu có nên tăng lên 128MB ko các bạn?

    1. Việt Phương Moderator

      Đối với các tham số suggest theo cụ thể từng hệ thống, bạn nên tham khảo thêm các nguồn về ý nghĩa tham số để có quyết định rõ ràng. Ví dụ, Query cache bạn có thể tham khảo các link dưới. Query cache dùng cache các query đọc, ưu tiên dùng trong các hệ thống 1 core, các truy vấn đọc nhiều hơn các truy vấn viết.
      https://mariadb.com/kb/en/mariadb/query-cache/
      http://dba.stackexchange.com/questions/33214/query-cache-type-0-vs-query-cache-type-1
      http://stackoverflow.com/questions/14420475/query-cache-type-enable-or-disable

  3. Đoàn Văn Khoa 3 comment

    Hỏi ram mình sử dụng chỉ có 16% , làm sao để nó tăng sử dụng ram lên 70% như bài viết, tăng chổ nào vậy!

    1. Việt Phương Moderator

      Mình chưa hiểu ý bạn lắm. Nếu cấu hình VPS cao mà service ít thì RAM bạn sẽ sử dụng ít mà

      1. Đoàn Văn Khoa 3 comment

        Tăng hoặc giảm bộ nhớ làm sao giữ cho memory usage <= 70% là ổn, bộ nhớ còn trống sẽ được dùng cho các việc khác.

        Dòng này mấy bác, chỉnh chổ nào!

        1. Việt Phương Moderator

          Đây là chỉnh các thông số của ZendOpcache. Nếu hệ thống bạn không bị RAM quá cao thì không cần để ý bạn à.

          1. Đoàn Văn Khoa 3 comment

            thì e muốn tăng tốc cái website, nên khai thác tối đa RAM

          2. Việt Phương Moderator

            Trường hợp này service bên bạn sử dụng chỉ có thế thôi mà, trong trường hợp RAM dùng nhiều mà webserver, php, mysql dùng phần trăm ít thì mới cần quan tâm bạn à. Cụ thể, Ram bạn sử dụng quá 70% mới cần phân phối lại giá trị này.
            HocVPS cài đặt Memory cho ZendOpCache là 128MB, nếu số lượng site tăng và lượng RAM sử dụng tăng quá 70%, bạn tăng giá trị opcache.memory_consumption=128 trong /etc/php.d/10-opcache.ini

  4. Huynh Minh Chi 8 comment

    Hiện mình mới mua con VPS 1core, ram 2GB, và xài Direct Admin, mình có cần cài theo bài hướng dẫn này để chiệu tải cho web tốt ko ? web mình online cao điểm cũng tầm 400 user. mong các bạn tư vấn.

  5. hongvi 4 comment

    nếu bạn làm 1 video hướng dẫn đầy đủ bài viết này kèm theo.. thì newbie sẽ dễ theo kịp hơn… 🙁 mong sớm có video ạ

  6. Hải 13 comment

     Mình bị lỗi này khi vào quản lý file.
    Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; ext_Json has a deprecated constructor in /home/domain.vn/private_html/filemanager/libraries/JSON.php on line 117

    Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Services_JSON_Error has a deprecated constructor in /home/domain.vn/private_html/filemanager/libraries/JSON.php on line 840

    Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Services_JSON_Error has a deprecated constructor in /home/domain.vn/private_html/filemanager/libraries/JSON.php on line 854

  7. Vũ Bảo Dương 11 comment

    Nếu mình không sử dụng Wordpess thì không cần làm bước 4 (cấu hình W3 Total Cache) nữa đúng không vậy?

Comment của bạn

Your email address will not be published. Required fields are marked *