Hiện nay, trong 100 website lớn nhất thế giới, có tới khoảng 25% website sử dụng mã nguồn WordPress như The NewYork Times, e Bay, TechCrunch, Masable, CNN, BBC America, Sony Music, MTV News, Bata, Quart…

Nguyên nhân xuất phát từ những điểm ưu việt không thể bỏ qua của WordPress như: thời gian thiết kế web nhanh, chi phí thấp, dễ dàng sử dụng, cộng đồng hỗ trợ lớn mạnh, giao diện và plugin khá đầy đủ và miễn phí, khả năng hỗ trợ nền tảng đa ngôn ngữ… Tuy nhiên, không phải ai cũng hiểu được một số cách thức cần thiết để tối ưu hệ thống chạy bằng WordPress, tiêu biểu như quá trình scale website.

Thông thường, ba nguyên nhân chính khiến WordPress chậm khi scale(scale là thuật ngữ chỉ những điều chình về phần cứng và phần mềm giúp phần mềm chạy nhanh và đáp ứng nhu cầu) chính là:

  • Hosting stack: bạn cần 1 host tốt với phần mềm mới nhất như PHP7, Nginx, Varnish, Redis, fail2ban, PerconaDB…
  • Không table scans: rất nhiều plugins được các coder không chuyên viết dù các coders này nhiều khi còn không biết table scan là gì.
  • Không có hoặc rất ít các truy vấn SQL trong PHP loops.

Website wordpress có được thiết kế để đáp ứng lượng truy cập lớn từ người dùng?

Trước khi sử dụng WordPress cho một trang web có lưu lượng truy cập cao, bạn cần đảm bảo rằng trang web của mình đã sẵn sàng để xử lý khối lượng request lớn liên tục từ người dùng. WordPress chắc chắn có khả năng quản lý và đảm bảo cho lượng truy cập lớn, nhưng có những hạn chế về mặt nền tảng khi triển khai.

Do đó để đảm bảo site của mình không sập và bị lỗi khi có hàng nghìn người truy cập bạn cần nắm rõ một số yêu cầu gợi ý bắt buộc sau đây.

Tăng giới hạn phần cứng của hosting hoặc máy chủ.

Về lý thuyết và trong tình trạng lý tưởng nhất wordpress cũng như bất kì nền tảng website nào đều có thể sử lý hàng nghìn tới hàng triệu lượt truy cập một lúc nếu phần cứng của máy chủ(hosting là 1 phần máy chủ nên từ giờ chúng ta dùng khái niệm máy chủ – server để nói chung) đáp ứng được hết các yêu cầu – request từ người dùng.

Có hai yêu cầu chính về phần cứng gây hạn chế lượt truy cập từ khách hàng đến website của bạn là:

  • Giới hạn bộ xử lý cpu.
  • Giới hạn về băng thông đường truyền mạng.

Giới hạn bộ xử lý cpu

Mức lưu lượng truy cập cao có thể đặt nhu cầu lớn về tài nguyên nội bộ của máy chủ của bạn. Đảm bảo rằng máy chủ của bạn có đủ nguồn điện và bộ nhớ xử lý để đáp ứng các yêu cầu này. Các yêu cầu mặc định cho WordPress được liệt kê dưới đây. Tuy nhiên, các trang web riêng lẻ có thể yêu cầu tài nguyên bổ sung.

MySQL / MariaDB

Mysql and Mariadb

Mysql and Mariadb

Như với nhiều ứng dụng blog và ứng dụng web, WordPress phụ thuộc vào MySQL hoặc MariaDB để lưu trữ dữ liệu để tạo đầu ra. Mọi yêu cầu WordPress làm cho MySQL / MariaDB, bao gồm cả hoạt động đọc và ghi, tạo ra một tải trên máy chủ.

WordPress được tối ưu hóa liên tục để giảm thiểu số lượng yêu cầu cơ sở dữ liệu cần thiết cho hoạt động thường xuyên. Tuy nhiên, các phương pháp phát triển được sử dụng trong các plugin hoặc chủ đề có thể tăng lượng sử dụng cơ sở dữ liệu cần thiết để chạy một trang web cụ thể. Trong các tình huống có lưu lượng cao, nhiều kết nối cơ sở dữ liệu đồng thời có thể gây ra sự căng thẳng quá mức trên máy chủ. Kết nối không đầy đủ với máy chủ sẽ làm cho phản hồi “Kết nối đã hết thời gian chờ” trong trình duyệt của khách truy cập.

Tỷ lệ kết nối MySQL / MariaDB có thể được cải thiện bằng cách điều chỉnh các thiết lập MySQL / MariaDB, hoặc cung cấp thêm bộ nhớ và sức mạnh xử lý cho máy chủ overworked. Ngoài ra, việc sử dụng bộ đệm truy vấn và lập chỉ mục thích hợp có thể giúp cải thiện hiệu suất MySQL / MariaDB. Không có giải pháp duy nhất cho mọi trường hợp, vì tất cả các trang web hoạt động khác nhau.

Một tùy chọn khác đáng xem xét cho các trang lưu lượng truy cập cao đang tạo ra một rule chỉ đọc của máy chủ cơ sở dữ liệu chủ của bạn. Vì hầu hết các yêu cầu của cơ sở dữ liệu bởi trang WordPress của bạn là các yêu cầu SELECT (hoặc read), chúng có thể được tách ra khỏi các yêu cầu UPDATE hoặc INSERT khác bằng cách sử dụng một plugin quản lý cơ sở dữ liệu như HyperDB, được viết bởi nhóm WordPress Plugin.

Dịch vụ máy chủ phân phối webserver.

Apache and Nginx

Apache and Nginx

WordPress là một ứng dụng máy chủ web trung lập, có nghĩa là nó có thể chạy trên nhiều nền tảng khác nhau. Apache và Linux là những nền tảng mạnh mẽ nhất để chạy WordPress, nhưng bất kỳ máy chủ nào hỗ trợ PHP và MySQL hoặc MariaDB đều sẽ chạy được wordpress.

Đảm bảo máy chủ của bạn có phiên bản cập nhật và ổn định nhất của các nền tảng này để tạo môi trường mạnh mẽ để chạy WordPress.

Phương thức được chọn để chạy PHP – ngôn ngữ diễn giải mã WordPress – cũng có thể ảnh hưởng đến hiệu suất của máy chủ của bạn. Trong chế độ CGI, máy chủ tạo ra một thể hiện mới của chương trình PHP cho mọi tệp PHP mà một khách truy cập yêu cầu. Trong chế độ shared-module chia sẻ (hoặc ISAPI), mỗi yêu cầu PHP được xử lý bởi một cá thể thư viện duy nhất.

Ngoài ra còn có nhiều quan niệm sai lầm về lợi ích của việc triển khai đa luồng Apache 2. Nói chung, hiệu suất prefork của Apache 2 với mod_php là ổn định nhất. Có những ưu điểm và nhược điểm đối với mỗi phương thức – khi chọn phương thức cho máy chủ của bạn, hãy nhớ lưu lượng truy cập và nhu cầu của nó trên máy chủ và đảm bảo chạy thử nghiệm của riêng bạn trước khi triển khai.

Giới hạn băng thông đường truyền mạng của nhà cung cấp.

Kết nối Internet chậm có thể giới hạn số lượng trang mà máy chủ của bạn có thể phân phối trong một khoảng thời gian nhất định. Bạn có thể hiểu nó theo hướng như vầy: bạn cần download 1 file nặng 100gb thì thời gian để hoàn tất phụ thuộc vào tốc độ của đường truyền mạng của bạn. Máy chủ chạy trang web của bạn cũng có tốc độ y như đường truyền internet nhà bạn đang sử dụng.

Nhà cung cấp mạng của máy chủ ( máy chủ hoặc ISP ) của bạn thường sẽ kết nối máy chủ của bạn với mạng nội bộ của họ thông qua bộ điều hợp Ethernet. Bộ điều hợp thường hoạt động ở tốc độ tối đa tiêu chuẩn nhất định, thường là 10Mb / s, 100Mb / s hoặc 1Gb / s. Máy chủ của bạn không thể truyền tệp nhanh hơn tốc độ kết nối mạng này. Ngoài ra, có nhiều yếu tố khác có thể ảnh hưởng đến tốc độ truyền thực tế mà máy chủ của bạn nhìn thấy.

Đầu tiên, điều quan trọng cần lưu ý là nhiều người trong số những con số này (đặc biệt là tốc độ bộ điều hợp mạng của máy chủ) là lý thuyết. Trong thực tế, máy chủ của bạn sẽ không bao giờ truyền tệp ở tốc độ tối đa được chỉ định bởi bộ điều hợp. Điều này là do, ngoài các dữ liệu thực tế được chuyển giao, máy chủ cũng gửi và nhận thông tin định tuyến cần thiết để nhận dữ liệu cho khách truy cập trang web của bạn. Do “phí trên mạng” này, chỉ một phần nhỏ băng thông của máy chủ có sẵn để thực sự chuyển các tệp.

Thứ hai, máy chủ của bạn có thể được kết nối với các thiết bị khác nhau trong các cơ sở của nhà cung cấp mạng của bạn. Những thiết bị này cũng có thể đặt những hạn chế về tốc độ “thế giới thực” mà máy chủ của bạn có thể đạt được. Chúng được đưa ra vì nhà cung cấp mạng của bạn phải phân chia băng thông giới hạn của nó cho nhiều máy chủ tại vị trí của nó và tất cả băng thông phải được chia sẻ.

Một số nhà cung cấp mạng nhất định cho phép bạn “bùng nổ vượt cạn” dữ liệu – tạm thời vượt quá giới hạn tốc độ truyền đã đặt trước – trong trường hợp nhu cầu nội dung trang web của bạn đặc biệt cao. Phần cứng của nhà cung cấp mạng được thiết kế để biết khi nào cần thiết. Một số nhà cung cấp tính phí thêm cho tính năng này, một số thì không, và một số khác không cung cấp tính năng này. Liên hệ với nhà cung cấp dịch vụ để tìm hiểu xem tính năng này có khả dụng cho bạn hay không.

Giới hạn tốc độ truyền tải mạng của máy chủ.

Để xác định lý do tại sao băng thông của kết nối là quan trọng đối với một trang web có lưu lượng truy cập cao, hãy xem xét toán học.

Giả sử trang web của bạn nhận được 100.000 lượt truy cập trong một ngày. Với mục đích của tính toán này, chúng tôi sẽ nói rằng một “hit” là một chuyển đổi dữ liệu duy nhất, cho dù đó là một tập tin duy nhất hoặc một trang toàn bộ và các tập tin hỗ trợ của nó. Trung bình, 100.000 lượt truy cập trong một ngày tương đương với 1,16 lượt truy cập mỗi giây.

Giả sử mức truy cập trung bình tạo ra 160KB dữ liệu được chuyển; HTML, hình ảnh, CSS, tệp đã tải xuống, v.v. Điều này có nghĩa là trang web của bạn đang chuyển 190KB dữ liệu mỗi giây ( 160KB / hit * 1,16 lần truy cập / s ). Tổng cộng, 190KB / s, bằng khoảng 1.5Mb / s thông lượng duy trì.

Lưu ý rằng KB = Kilo byte và Mb = Mega bit . Hầu hết tốc độ mạng được đánh giá theo bit/trên giây, trong khi kích thước tệp được tính theo byte. nên bạn cần quy đổi với tỉ lệ 8 khi xem xét 190KB x 8 = 1,52 Mb/s

Nhiều nhà cung cấp mạng giới hạn tốc độ truyền của trang web đến mức này; một số cao hơn, một số thấp hơn. Tuy nhiên, tỷ lệ ổn định này sẽ chỉ được duy trì nếu mỗi người dùng riêng lẻ truy cập vào trang web theo các khoảng thời gian đều đặn.

Thông thường, nhiều người dùng cùng một lúc sẽ truy cập trang web của bạn. Mặt khác, có thể có những khoảng thời gian mà không ai truy cập vào trang web của bạn cả. Nếu 10 người đột nhiên truy cập trang web trong một giây và tỷ lệ truy cập đó được duy trì trong một khoảng thời gian dài – không phổ biến cho trang web có lưu lượng truy cập cao – thì bạn sẽ cần kết nối 15Mb / giây để theo kịp các kết nối đồng thời.

Nếu tốc độ lý thuyết tối đa của bộ điều hợp mạng của bạn chỉ là 10Mb/s, nhu cầu đã vượt quá dung lượng. Trong trường hợp này mạng là nguồn gốc của các vấn đề giao thông của bạn, thay vì WordPress.

Nó không phải là cần thiết để nhận hàng trăm ngàn lượt truy cập để trải nghiệm vấn đề này. Duy trì tốc độ kết nối này trong một giờ chỉ tạo ra 36.000 lượt truy cập. Nếu khách truy cập trang web của bạn có xu hướng ưu tiên một thời gian nhất định trong ngày (hoặc tập lệnh spam nhận xét tự động cố truy cập vào hệ thống của bạn nhiều lần đồng thời trong khi đăng nhận xét) thì bạn có thể bị bỏ lại với nhiều yêu cầu bị từ chối.

Kết nối 100Mb / s có thể xử lý tới 70 kết nối đồng thời với cùng tốc độ tải xuống, nhưng hầu hết các nhà cung cấp mạng sẽ không cung cấp băng thông cần thiết để sử dụng hoàn toàn tốc độ này trên các gói lưu trữ được chia sẻ của họ. Bạn có thể sẽ cần phải trả phí thêm để có được loại băng thông này từ kết nối của bạn.

Một phương pháp phổ biến để tối đa hóa hiệu suất của trang web của bạn trong khi tránh bị tràn là sử dụng Mạng Phân phối Nội dung (CDN) với trang web của bạn. Có rất nhiều giải pháp trả tiền khi bạn đi để giúp bạn tránh được những giới hạn về băng thông được thực hiện bởi một số nhà cung cấp dịch vụ lưu trữ.

Xem thêm các bài viết khác tại bảng dưới

Chỉ mụcNội dung
Phần 1Series tăng tốc site WordPress từ A-Z
Phần 2Giải pháp cho site Wordpress đáp ứng lưu lượng truy cập cao
Phần 3Top 6 plugin caching tăng tốc độ WordPress Site

 

About the author

Kevin Dang

Hey there! My name is Kevin Dang, I am website, software, mobile app develop, web admin system. Expert living in Hồ Chí Minh (Việt Nam). I am very interested in digital marketing with: SEO, Facebook, Google Ads ... This blog is where I will share the experiences, techniques and knowledge I have learned.