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="128"
OPTIONS="-l 127.0.0.1 -U 0"

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:

Comment của bạn

Lưu ý: tất cả comment đều được kiểm duyệt cẩn thận! Nếu có code bạn hãy up lên pastebin.com rồi để lại link trong comment.

843 Comments

  1. tu 52 comment

    hocvps Script hình như cập nhật phiên bản server chậm thì phải Luân ơi, check lại hộ mình với, mình Update rồi, nhưng phiên bản
    Kiem Tra Cap Nhat
    =========================================================================
    Phien ban moi nhat:
    + Nginx: 1.10.1 (ban dang su dung 1.10.1)
    + PHP: 5.6.25 (ban dang su dung 5.6.25)
    + MariaDB: 5.5.51 (ban dang su dung 5.5.51) =>> cái này không phải là 5.6.20 nên không dùng được plugin Duplicator, Luân cập nhật hộ mình với

    xem ảnh:
    http://i216.photobucket.com/albums/cc162/minhcanvao/Capture_1.jpg

    1. Luân Trần Admin

      Cái đó không vấn đề đâu bạn, để có được 2 hosting cùng phiên bản MySQL khá là khó, nên bạn bỏ qua cái này.

      1. tu 52 comment

        có cách nào hạ version mySQL trên localhost xuống được không nhỉ Luân ơi, có thì hướng dẫn mình với, không hiểu sao version MySql trên máy mình là 5.6.20 nên mình không chuyển database từ local lên Host được,

        – mình chuyển database làm bằng tay để Export từ local rồi Import lên host cũng bị lỗi, trong khi Export từ local rồi Import test trên local thì bình thường => không đưa web từ local lên Host được

        (cái này của thằng Duplicator nó thông báo phần Tool của nó)
        MySQL
        Version 5.6.20
        Charset utf8mb4
        Wait Timeout 28800
        Max Allowed Packets 1048576
        msyqldump Path C:/xampp/mysql/bin/mysqldump.exe

        1. Luân Trần Admin

          Phải hạ version MySQL thì hơi lằng nhằng đó, khó để cài đúng phiên bản mong muốn được. Bạn tính phương án khác được ko?

      2. tu 52 comment

        liệu có phải là xung đột giữa Xampp không hỗ trợ MariaDB nhiều nên xay ra xung đột không nhỉ Luân nhỉ

        1. Luân Trần Admin

          Import thì bạn dùng thử BigDump hoặc Sypex Dumper nhé, không nên dùng phpMyAdmin, mình thấy hay bị lỗi

          1. tu 52 comment

            có lẽ số mình nhọ quá lền thử dùng cả BigDump và Sypex Dumper cũng không up được database Mysql lên host, dùng BigDump thì bị báo lỗi không biết cái mã utf8mb4_unicode_520_ci là gì, và không chạy backup được, còn Sypex Dumper cũng tương tự cũng bị lỗi….. 🙁 có lẽ không đẹp zai nó khổ vậy, cách còn lại là làm trực tiếp lại web trên server luôn 🙁

  2. Hai Lúa 5 comment

    Hi admin Luân,
    Cho mình hỏi và tư vấn giúp mình.
    Mình cài VPS theo bài viết này 2 vps như sau:
    1. Vultr gói 20$/tháng 2core, 2GB ram
    2. Linode 20$/tháng 2core, 4GB ram
    chạy 1 site duy nhất khi cao nhất khoảng >1000 user online theo google analytics thì 1. vultr hết RAM site chạy chậm lại khi vào không được -> error 502 và die.
    trong khi 2.linode thì RAM còn 1/2 mà CPU >95% một lúc thì die luôn, linode gửi thư báo site tôi chạy CPU >200% (khiếp).
    Luân hướng dẫn mình cài 2 VPS trên để site mình chạy tốt khi có lượt truy cập cao nhất >1500. site mình wordpress – data 102 bài viết (sql 5MB), toàn bộ site =40MB. cài theme genesis news pro, plugin seo, jetpack, wp rocket,
    Thank Luân nhiều.

    1. Luân Trần Admin

      Mình chỉ support được những câu hỏi cụ thể thôi, chứ hỏi như vậy khó quá

    2. Thịnh Lê 8 comment

      có thể bạn cần tối ưu lại php, mysql về connection, socket. Bạn tìm thử process nào chiếm CPU hay RAM cao quá hay 1 process nào đó bị treo?

  3. Khám Phá Di Sản 6 comment

    Website của mình cài đặt hocvps, soạn thảo văn bản xong bấm publish hay updates nó load 1 hồi lâu rồi hiện 502 Bad Gateway, cho mình hỏi phải xử lý thế nào ạ 🙂

      1. Khám Phá Di Sản 6 comment

        Dạ, Anh Luân có thể hướng dẫn giúp em các bước kiểm tra được không.
        Em đang dùng con vps của linode loại 10$/ tháng – con 2gb ram đó a.
        Bộ code 3gb
        data chưa tới 60mb.

          1. Khám Phá Di Sản 6 comment

            Dạ, em có nhận ra một điều như thế này, trường hợp bài viết sử dụng trên 10 ảnh, thì nó sẽ báo lỗi (sau khi load 1 hồi lâu).
            còn sử dụng dưới 10 ảnh thì sẽ ok (sau khi load 1 hồi cũng lâu khoảng 1p).
            Em vẫn đang cố gắng tìm nguyên nhân để khắc phục 🙁
            cảm ơn anh

  4. Cường Lương 3 comment

    Chào Luân, Mình cần tư vấn để làm 1 trang tin tức tổng hợp, dữ liệu chủ yếu là bản tin, hình ảnh và videos. Với lượt người truy cập dự tính vài trăm đến 1 triệu lượt 1 tháng.
    Số người online 5k -10k cùng lúc.

    Luân có thể tư vấn về phần cứng máy chủ cho mình được không ?

    Cảm ơn !

    1. Luân Trần Admin

      Bạn dùng VPS ở các nhà cung cấp nổi tiếng, chọn cấu hình 4GB RAM chạy thử coi sao. Nếu không được thì tiến hành tối ưu, nâng cấp tiếp.

        1. Luân Trần Admin

          Băng thông này hơi ít, truy cập đông khoảng trăm người online một lúc là nghẽn rồi.

          1. Cường Lương 3 comment

            Băng thông này nó gọi là băng thông trong nước.
            Còn băng thông chính là Băng thông: Unlimited
            Intel Xeon E3-1220 v3, 3.1GHz, 8MB Cache, 4 Cores, 4 Threads
            RAM: 4GB RAM ECC
            HDD: SATA 500GB
            IP: 1
            Băng thông: Unlimited
            Cổng trong nước(up/down) 100 Mbps
            Cổng quốc tế (up/down): 8/6 Mbps

            Mình muốn hiểu về số cổng trong nước đó.

          2. Luân Trần Admin

            Băng thông unlimit không để làm gì khi mà bị limit port speed (cổng). Thực ra đây chỉ là chiêu quảng cáo thôi.
            Bạn xem mình phân tích nhé, ví dụ 100 Mbps -> mỗi giây tốc độ truyền tải tối đa là 100/8 = 12.5 MB mà thôi.
            Giả sử website của bạn có dung lượng 2MB -> chỉ cần 6 – 7 người cùng request là bắt đầu nghẽn rồi.

            Port speed quốc tế 8/6 Mbps thực sự quá tệ.

  5. Hai Lúa 5 comment

    HI, Luân, Tôi cài theo bài này vps vultr RAM 2GB,
    Tôi dùng plugin cache wp rocket thay cho W3 Total Cache được không bạn?

    Thank.

  6. Hiếu Đoàn 1 comment

    mình cài với cấu hình vps như bài hướng dẫn và chạy được gần 1 tháng ổ cúng mình bị full ( lúc cài xong còn trống 35G ) có cách nào kiểm tra và dọn dẹp nhanh gọn ko Luân

  7. Trung Vu 5 comment

    Ad ơi cho mình hỏi chút
    Sau khi setup vps xong, mình vào mấy trang quản lý thì xuất hiện lỗi
    ví dụ vào phpmyadmin thì có lỗi
    Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.

    vào filemanager thì có lỗi
    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/www.iunlockglobal.com/private_html/filemanager/libraries/JSON.php on line 117

    1. Luân Trần Admin

      Bạn chạy lệnh hocvps, chọn chức năng Phân quyền webserver lại thử coi?

      1. Trung Vu 5 comment

        mình set lại quyền write cho thư mục php session thì được rồi Ad ạ. Cảm ơn bạn nhiều 🙂

  8. Tiến 1 comment

    Ad cho mình nhờ tí, mình add 2 site vô 1 vps, mình muốn off tạm thời 1 trang khoảng 10 ngày chạy lại thì làm thế nào ad

  9. Hoang 14 comment

    Em chào anh, website baconsoi.biz của e cài trên vps của wable. Tuy nhiên, chức năng đặt hàng online khi khách thực hiện bị lỗi khi gửi email thông báo (trong khi nếu e sử dụng stable host thì vẫn ok).
    Chức năng gửi email này là của woocommercial plugin ah. Mong anh giải đáp giúp em vụ này.

    Em cám ơn.

    1. Luân Trần Admin

      Đầu tiên bạn test sendmail từ server xem có vấn đề gì không với lệnh bên dưới:

      echo "Subject: test" | /usr/lib/sendmail -v admin@gmail.com

      Nếu send ok thì cài plugin WP Mail SMTP để debug là ra vấn đề nhé.

  10. zmupnguyen 56 comment

    Hi ad,

    Cho mình hỏi là Op của mình Memory Usage: 90%, Hit rate 96% . Tổng bộ nhớ là 128MB. Thông số 2 cái thống kê như vậy là ổn không ad ?

    Tks

    1. Luân Trần Admin

      Hit rate quá ổn rồi. Memory usage hơi cao, nếu bạn không add thêm site nào vào VPS thì để đó dùng cũng được, làm sao không được để tới 100% nhé.

  11. Albert 1 comment

    Quan trọng đâu phải số người online mà là số lượng concurrent users, theo như mình thấy trên ảnh thì lúc cao nhất có 25 cú cllick, nếu hầu hết sử dụng modern browser như Chrome, Firefox thì tương ứng khoảng 100-125 request/s, cũng khá tốt với 1 server ít tài nguyên như vậy. Tuy nhiên nếu user dùng các queries mà không cache được như là tìm kiếm thì cũng vất vả lắm.

  12. dũng 119 comment

    Ko hiểu sao mình làm theo các bước ok
    Mà người truy cập tầm 300 400 là CPU lên 100% là die sever

  13. Quỳnh 3 comment

    Anh Luân cho e hỏi, là nếu lượng onl lớn như vậy, thì trung bình 1 tháng anh sử dụng bao nhiu băng thông?

    1. Luân Trần Admin

      Mình chỉ chạy website thôi ít lắm, thường chưa bao giờ vượt qua giới hạn của nhà cung cấp.

  14. Tuấn 1 comment

    Chào khi chạy OPcached Zend với PHP 5.6 thì thường hay bị lỗi 502 Bad Gateway.
    Khi disable thì chạy ko lỗi, sau đó bật lại Opcached vẫn chạy tốt nhưng 1 thời gian lại bị 502 Bad Gateway

    1. Luân Trần Admin

      Bạn kiểm tra lại xem dung lượng sử dụng của Zend OPCache thế nào, có đang bị vượt quá ko?

  15. Hiếu 11 comment

    VPS Digital Ocean ram 8GB config như thế này có ổn không Luân ơi hay còn cách nào khác tốt hơn đối với ram 8GB vậy Luân?

      1. Hiếu 11 comment

        Vậy là mọi thứ vẫn cài y chang RAM 2G nhưng cài thêm Varnish nữa phải không Luân

      2. Hiếu 11 comment

        Mình tính cài theo thứ tự ntn: Hocvps -> Memcached -> Varnish -> WordPress
        Zend Opcache thì có sẵn rồi.
        Vậy có ổn không Luân?

        1. Luân Trần Admin

          Memcached không cần đâu bạn, có dùng thì dùng Redis tối ưu hơn. Nhưng trước mắt cứ cài HocVPS Script – Varnish – WordPress là load như gió rồi.

  16. DuongLm 4 comment

    ở phiên bản cũ mình chạy lệnh này được
    service mysql restart
    mà xài phiên bản mới không biết reset mysql bằng lệnh nào vậy bạn

    1. Luân Trần Admin

      Cũng như vây bạn. Đây là dòng lệnh Linux, không liên quan gì đến HocVPS Script.

    1. Luân Trần Admin

      Bạn phải cài thêm WP Super Cache nữa nhé, dùng WordPress là phải cài cache.

        1. Luân Trần Admin

          Một trong 2 plugin cache này đều ok, thử trước với WP Super Cache nhé. Mình toàn sài thằng này thôi cho nó đơn giản.

      1. Ngo Van Nhu 6 comment

        m có cài thêm WP Super Cache từ đầu mà nhưng không ăn thua lắm , trung bình 150 người online thì khoảng 60 – 80 % CPU rồi có lúc còn nhảy lên 150% CPU và thấy không vào dc Web nữa chắc phải nâng cấp lên rồi 🙁

  17. Haphuong 3 comment

    Luan Tran ơi cho mình hỏi, mình cài ZenOPcache và memecache rồi thì trong wp có cần phải cài wp super cache hay w3 total cache nữa không vậy? Nếu k cài thêm hai cái đấy có sao k nhỉ? Mình dùng gói 4G Ram của linode, online real-time khoảng 200 google analytics mà cpu >80%, Ram > 85%. ( Mình xem thống kê trong longview). Có cách nào để giảm sử dụng ram đi k nhỉ?

    1. Luân Trần Admin

      Bạn dùng Zend Opcache thì mặc định sẽ cache toàn bộ các file .PHP rồi. Còn muốn sử dụng Memcached thì bắt buộc phải cài W3 Total Cache và cho nó cấu hình sử dụng thì mới được. Giờ bạn thử trước với WP Super Cache đi xem thế nào?
      Dùng WordPress bắt buộc phải cài plugin cache nào đó, ko thì tốn tài nguyên lắm.

  18. dinh mao 2 comment

    mình vào phpmyadmin báp lỗi này là sao nhỉ #1045 – Access denied for user ‘admin’@’localhost’ (using password: YES)

  19. Nate 12 comment

    Có cách nào viết đếm lượt truy cập mà không bị cache ko luân cái super cache thêm vào nó cứ lưu mãi 1 số ko thay đổi dc.

  20. Thanh Nhàn 1 comment

    Em đang chạy vps cài Webmin và Virtualmin mất rồi mà em không biết nâng cấp php 5.3 lên 5.5 bác chỉ em với

    1. Luân Trần Admin

      Bạn tìm thông tin ở 2 bên này xem có hỗ trợ lên PHP 5.5 không, nếu không tự update lên hỏng luôn VPS đó 😀

  21. Đặng Luận 1 comment

    Admin cho mình hỏi là mình muốn cấu hình vps centos để làm host chạy web thì chỉ cần cài đặt HocVPS Script là được rồi phải ko admin. Có cần cài thêm gì không ạ

  22. Tuấn 1 comment

    nghe nói bên amazon có vps miễn phí 1 năm
    nhưng làm theo hd trên mạng ko đc
    ad khi nào rãnh làm 1 bài hướng dẫn cho mọi người đc ko ạ

  23. Minh 21 comment

    Cài đặt Zend Opcache
    Làm sao thay đổi các thông số total memory: 128.00MB vậy Luân ??
    Thay đổi trong file nào ??
    thanks

  24. thuy phuong 6 comment

    Bác ơi! có dịch vụ cấu hình VPS ko ạ! Em chạy cái ram 1g mà online lên 500 thấy nó đã chịu ko nổi nhiệt rồi

  25. Nam 2 comment

    Luân ơi cho mình hỏi sao mình chạy theo bài này trên vps lindone mà nó báo max cpu hoài gói ram 2 core 4ram online cao nhất là 550, bên viltr mình chạy cả 2 web online cao hơn mà có 2g ram mà ko sao bên lindone mình chạy có 1 web mà đã thế rồi

      1. Nam 2 comment

        Mình xài super cache bật memcache các kiểu rồi, ở bài này mình cài học vps với memcache thôi

  26. Kevin 6 comment

    Script này chỉ chạy được Centos thôi hả Luân? Vậy còn Ubuntu thì sao?

    1. Luân Trần Admin

      Ubuntu không dùng được. Để chạy web server thì dùng CentOS hiệu quả nhất đó bạn.

  27. Thành 3 comment

    Bác cho em hỏi chút, em có 1 VPS cài đặt 2 website trên đó thôi mà lúc nào cũng báo full bác ạ.
    Có thể giải quyết vấn đề này được không bác, vì em kểm tra có lúc khonarg 500 truy cập vào cùng 1 lúc @@.

    1. Luân Trần Admin

      Báo full RAM hay gì bạn nhỉ. Để kiểm tra chuẩn bạn vào serverinfo của HocVPS Script, xem ở dòng Real Memory nhé.

  28. DinhBiPlus 3 comment

    Hocvps ver mới ko biết có cần tối ưu thêm như bài hướng dẫn này không, em thấy đã có tích hợp sẵn Zend Opcache.

  29. Hữu Hùng 35 comment

    Anh Luân ơi cho e hỏi cái
    Cái OPcache của em để mặc định là 128MB RAM
    Có nghĩa là nó sẽ rút lấy 128MB đó của VPS xài.K cho thằng khác xài hay đó là dung lượng RAM max nó có thể xài nhỉ?

    Do site em xài OPCACHE em xem thống kê chỉ hết có max 70MB thôi à nên em định hạ 128MB kia xuống còn 90MB.
    Chứ nếu nó cứ chiếm mất 128Mb trong khi nó xài có 70 MB thì hơi phí anh nhỉ??

      1. Luân Trần Admin

        Em căn cứ vào tình trạng hệ thống mà cài đặt cho phù hợp, ko dùng hết thì giảm xuống đi nhé. Làm sao duy trì % sử dụng <= 70% là ok.