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. D 11 comment

    Mình dùng Nginx Reverse Proxy Cache toàn bộ GET Request thì có cần phải thêm Data Caching ko, vì đã cache rồi thì serve html chứ có dính dáng gì đến PHP MySQL nữa đâu nhỉ?

  2. Dũng 1 comment

    Mình cần sử dụng dịch vụ tối ưu tốc độ tải trang , có bạn nào nhận không ak

    Cần tối ưu vps và web

    Liên hệ: 0903041286 Dũng

  3. hongvi 48 comment

    Trước kia oke. tự nhiên gần đây nó không thể kết nối memcache được nữa. giờ e phải khắc phục sao vậy admin.

    The following memcached servers are not responding or not running:

    Database Cache: 127.0.0.1:11211.
    Object Cache: 127.0.0.1:11211.
    Page Cache: 127.0.0.1:11211.
    This message will automatically disappear once the issue is resolved.

        1. Việt Phương Moderator

          à ý mình là memcached có đang chạy không
          systemctl status memcached -l

          1. hongvi 48 comment

            memcached dead but pid file exists
            nó báo như này anh ạ..

          2. Việt Phương Moderator

            Bạn chạy giúp mình
            ps aux | grep memcached
            kill -9 số_pid_có_memcached_
            service memcached start

  4. Phong Phan 20 comment

    Như mình mua 1 vps 1gb ram về xài khoảng 50 website cho cty dc ko nhỉ ? vì các website đó lượng truy cập cũng rất ít. Không biết 50 site thì tốn ram nhìu hay cpu nhìu nhỉ ?

    1. Việt Phương Moderator

      Cái này tùy mã nguồn và database bên bạn. Mình không rõ rồi
      Nhưng thường VPS 1Gb ko đủ đâu

  5. Đất làng sen 20 comment

    Như mình mua 1 vps 1gb ram về xài khoảng 50 website cho cty dc ko nhỉ ? vì các website đó lượng truy cập cũng rất ít. Không biết 50 site thì tốn ram nhìu hay cpu nhìu nhỉ ?

  6. Ann 2 comment

    Cho mình hỏi gấp cái này vời ad ơi, mình đang dùng hocvps script, mình có cài theo hướng dẫn của bạn về pagespeed để mong muốn tăng tốc độ website, nhưng sau khi cài xong cảm giác thấy sao sao mặc dù là chỉ số test trên pagespeed insight có tăng 5-7 điểm sau khi cài đặt
    Mình có cài luôn Memcached và mình đang sử dụng Xenforo. Mình có băn khoăn là nếu cài đặt Memcached thì tự hệ thống nó sẽ dùng Memcached hay là phải configure cho nó nữa, không thấy bạn đề cập trong bài
    Điểm số trên pagespeed insight khi chưa cài pagespeed khá tệ, chỉ có trong khoảng 41-43, sau khi cài nó được nâng lên, dao động 47-52 (trên mobile)

    Mình có nên gỡ bỏ pagespeed không, và cách gỡ bỏ như thế nào để không ảnh hưởng tới các thiết lập mình đang sử dụng vậy bạn, tại không thấy trong bài hướng dẫn nên mình muốn hỏi cho chắc ăn

  7. trà my media 1 comment

    không hiểu sao CPU mình tăng lên hơn 400%, nhưng băng thông thì ko tăng đáng kể.
    nhờ bạn hướng dẫn cách tìm ra nguyên nhân và hướng khăc phục

  8. Trần Việt Hưng 7 comment

    Cho mình hỏi mình đã cài Redis cache rồi thì có cần cài thêm W3 Total Cache không
    hay chỉ cần redis cache là đủ

  9. Tran Ba Dat 37 comment

    Mình xài HocVPS Script. VPS Vultr, 2GB RAM, 1 core.

    Nhưng web mình cứ online khoảng 40 người hơn là thấy hơi chậm. Check thì thấy RAM sử dụng chỉ khoảng 500MB, cache khoảng 1GB. Còn CPU thì những lúc người dùng click vào trang hay chuyển trang thì CPU có thể nhảy lên tới 50-90%, load xong thì lại về 0.

    Như vậy trang mình có vấn đề gì không admin?

  10. poro 8 comment

    Admin cho hỏi CON có phải là MAXCONN hay không? vì mình vào file cấu hình mà không tìm được MAXCONN và MEMSIZE chứ không tìm được Cachesize, không biết có phải do memcached nó update hay không vì bài nãy cũng lâu rồi.

    1. Việt Phương Moderator

      Bạn kiểm tra lại nhé, có thể bạn sửa sai file. Mình cài bản mới nhất 1.5.7 trên CentOS 7 thì file cấu hình vẫn vậy
      PORT="11211"
      USER="memcached"
      MAXCONN="1024"
      CACHESIZE="64"
      OPTIONS=""

  11. Thành Tân 13 comment

    Web mình 1 ngày cũng chỉ 1-1k5 visit mà hay bị tình trạng load cpu 100%, có cách nào phát hiện plugin nào gây nên tịnh trạng load cpu cao không Luân ?
    Mình dùng P3 Plugin mà nó load không ra ai cả. Cứ load cpu cao lên là bị treo mặc dù đã có cache ( OP, Wp-robot), bình thường k bị thì cpu chỉ load tầm 3-5% nên mình đoán là có sự cố chứ k phải web ngốn tài nguyên nhiều.
    Mong được Luân và các support giải đáp phương pháp
    Hiện mình xài VPS Vultr 5$

  12. Trần Long 4 comment

    Cám ơn ad,
    Sau khi mình làm theo các hướng dẫn trên và cài plugin W3 Total Cache. và kích hoạt Page Cache, Database cache và Object Cache Thì bị báo lỗi…Nhờ m.n và ad giúp đỡ vs ạ.

    The following memcached servers are not responding or not running:
    Database Cache: 127.0.0.1:11211.
    Object Cache: 127.0.0.1:11211.
    Page Cache: 127.0.0.1:11211.
    This message will automatically disappear once the issue is resolved.

    1. Việt Phương Moderator

      Thông báo hiển thị ở đâu vậy bạn? Bạn mở port 11211 chưa?

      1. Trần Long 4 comment

        mình cài hocvps nhưng ở bước.

        Mở cổng Memcached (11211) trên Iptables Firewall
        mình dùng lệnh:
        iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 11211 -j ACCEPT

        nhưng không có phản ứng.

    1. Việt Phương Moderator

      Bạn có thể liên hệ thông qua dịch vụ cài đặt và tối ưu VPS trọn gói nhé

  13. Yullian 1 comment

    Chào các bác,
    E muốn cache cho website asp.net + vps windows thì nên dùng gì ạ?
    Mong các bác vấn giúp

  14. Nam Thanh 36 comment

    Mình vừa bị bên dediserve gửi mail cảnh báo VPS dùng network nhiều bất thường đồng thời bị suspended luôn. Ngặc lỗi là mình cấu hình y như hocvps và dùng cả năm nay không bị gì. Chỉ vài site wordpress thôi. Không biết có cách nào xem thằng nào dùng nhiều mạng không vậy Luân nhỉ?

    Mình cảm ơn

    1. Việt Phương Moderator

      Bạn có dùng Memcached không? Update cấu hình options phần bài viết
      OPTIONS=”-l 127.0.0.1 -U 0″

    1. Việt Phương Moderator

      HocVPS cài được từ VPS thấp nhất 512MB bạn nhé. Bạn cứ cài đặt và tối ưu thôi

  15. Liêm 2 comment

    site mình 3 core 4gb ram mà chỉ chạy được 130 user online cùng lúc là sập, mình sử dụng DA đã tối ưu w3 total cache, cài opcache, php 7.1

        1. Việt Phương Moderator

          Mình không có xài bên Control Panel nên không rõ rồi. Bạn dùng thêm Cache như Memcached/Varnish xem sao

  16. Binh 3 comment

    Mình cấu hình theo hướng dẫn nhưng site mình cứ tầm 150-200 người online là CPU tăng lên hơn 90% khiến server respone time rất lâu. Bạn có thể xem qua ảnh dưới (thông tin tiến trình) và gợi ý mình biết 1 số nguyên nhân gây ra được chứ

    https://i.imgur.com/1RlEuAK.png

    Nếu bạn muốn xem thêm thông số nào thì bảo mình nhé

  17. Tuấn Anh 8 comment

    Mình cần cài 1 vps chịu tải 1k người onl 1 lúc với cấu hình VPS 1GB/1CPU với cách này có ổn không bạn. Mong bạn trả lời mình, xin cảm ơn!

    1. Việt Phương Moderator

      Tùy các trường hợp cụ thể nên bạn tự test thì rõ hơn nhé. Mình nghĩ là ok

  18. TrungAZ 9 comment

    Bài từ 2016, gần hết 2017 rồi, bác Luân có Update hay lưu ý gì mới không ạ? Mình chuẩn bị mua VPS 😀

  19. Long 6 comment

    Mình đang dùng VPS 4GB Ram, 4 core bên dediserve. Khi web đạt khoảng 400 user online thì có hiện tượng CPU của riêng mysql nhảy lên tới 300-400%.

    Có cách nào khác phục hiện tượng này không hả bạn?

    Mình dùng wordpress và cấu hình như bài này

  20. Kim Vàng 4 comment

    Không liên quan nhưng cho em hỏi các nhà cung cấp VPS họ tạo VPS như nào vậy nhỉ.

    1. Kiên 1 comment

      Bạn cũng có thể tạo VPS ngay trên máy ảo Virtualbox, VMware,.. cài trên máy tính của bạn 😀

  21. Kiet 8 comment

    Chào bạn,

    Mình đang tìm hiểu về cache

    Hiện mình đang sử dụng Opache Cache, Memcache, Redis & WP Rocket

    Bạn giúp mình phân biệt chức năng từng phần được không ?

    1. Việt Phương Moderator

      Zend Opcache và Memcached vẫn tối ưu tốt cho các website khác không phải WP nhé bạn

  22. Kim Vàng 4 comment

    Online hơn 2 k là ghê nhỉ. Mình 100 người cũng chưa biết khi nào đạt được.

  23. Văn Hưng 1 comment

    Ad có thể tư vấn giúp mình vấn đề này không? Mình đang chuẩn bị chuyển site từ share host qua vps, site mình là .NET do đó mình muốn thuê vps của vultr và cài win server 2012 (mình tự cài bằng ISO không cần mua win họ cài sẵn). Trong server mình chỉ chạy SQL và IIS thôi. Hiện tại mình đã deploy xong trên con VPS 5$ (1 Core, 1 GB Ram) để test được 1 tháng thì thấy khá ổn, giờ chuẩn bị public. Site của mình, traffic khoảng 20k/ngày, 400~500 user online đồng thời, vậy theo ad mình nên chọn gói nào là tốt nhất. Mà có điều mình cài win 2012 x64, nó đã chiếm hết 600MB Ram rồi, chạy SQL và IIS nữa là ~700MB.

    1. Luân Trần Admin

      Ôi site bạn online đông thế, mình nghĩ cần gấp đôi RAM. Bên này có thể tự nâng cấu hình lên được bạn cứ chú ý theo dõi thêm.

      1. Văn Hưng 1 comment

        Thanks bạn, mình upgrade lên con 10$ chạy vi vu (do site cũng nhẹ) nhưng sắp tới chắc up lên con 20$ luôn cho thoải mái.

        Mà có điều sau khi upgrade mình thấy RAM được nâng rồi nhưng SSD thì vẫn giữ nguyên, có vẻ như phải format lại ổ cứng thì nó mới nhận dung lượng SSD cộng thêm thì phải.

  24. Vũ Bảo Dương 13 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?

  25. Hải 21 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

  26. hongvi 45 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 ạ

  27. Huynh Minh Chi 10 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.

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

  29. 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

    2. Thuat 10 comment

      Leina 2 dòng 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.

      Bạn fix đc chưa bạn ?
      nếu được chỉ mình fix cái này đc ko ?
      thanks

  30. 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 12 comment

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

          1. Minh Clear 7 comment

            Theo mình nghĩ ý của bạn này là hocvps đã tích hợp tất cả những thứ này hết chưa 😀

          2. Việt Phương Moderator

            Thì trong bài viết đã đề cập bạn cần cài HocVPs rồi làm bước tiếp theo, tức là HocVPs chưa bao gồm bước tiếp theo rồi 🙂
            Hiện có Zend Opcache sẵn rồi