it-swarm-vi.tech

WordPress có quy mô tốt như thế nào?

Với WordPress mới và các tính năng mới của nó, có vẻ như WordPress có khả năng nhiều hơn một công cụ blog đơn giản. Nhưng quy mô WordPress được sử dụng tốt như thế nào khi nói 10k -> 100k người dùng mỗi ngày?

Với nhiều người dùng, phần lớn sẽ có một chiến lược bộ nhớ cache tốt, nhưng WordPress được phát triển tốt như thế nào để giúp đỡ, làm cho điều này trở nên dễ dàng và cung cấp cho bạn quyền kiểm soát bạn cần. Fx có thể lưu trữ một phần của trang và chỉ hiển thị các phần tùy chỉnh của người dùng, hỗ trợ thiết lập db master/Slave và những thứ tương tự?

34
googletorp

Rõ ràng không có gì chia tỷ lệ cũng như các tệp tĩnh được cung cấp bởi một máy chủ web nhanh và bất kỳ CMS nào phải tìm ra những gì để tải và sau đó tải nó sẽ không hoạt động tốt, WordPress hay cách khác. Một trong những vấn đề là số lượng truy vấn cơ sở dữ liệu cần thiết cho mỗi yêu cầu URL và kinh nghiệm 2 năm trước của tôi làm việc riêng với Drupal và bây giờ hơn 2 năm với WordPress là WordPress tốt hơn nhiều trong bộ phận đó.

Điều đó nói rằng, gần như không có gì với bất kỳ sức mạnh nào sẽ mở rộng quy mô "out-of-the-box"; tất cả là về bạn có thể làm gì khi nhu cầu mở rộng của bạn tăng lên?

Ở mức thấp của "nhiều lưu lượng truy cập" các plugin bộ nhớ đệm tuyệt vời tích hợp với các CDN rẻ tiền bạn có thể thực hiện công việc khá tốt khi không có CNTT ngân sách và ngân sách lưu trữ thấp. Dưới đây là một số câu hỏi và câu trả lời khác để xem xét:

Có các tùy chọn cho lược tả để xác định các tắc nghẽn hiệu suất :

Khi các nút cổ chai được xác định, bạn có thể thực hiện tối ưu hóa cục bộ với những thứ như API tạm thời . Câu hỏi và trả lời này đưa ra một ví dụ có thể được tối ưu hóa bằng API Transents và chỉ ra cách:

Nếu bạn thực sự muốn rút những khẩu súng lớn bạn có thể định cấu hình Memcached , HyperDB , Nginx và/hoặc nhiều hơn để tăng tốc mọi thứ đã xảy ra (có vẻ như sau này thực sự đang phát triển theo cách để có được khả năng mở rộng đáng kinh ngạc ra khỏi WordPress):

Và cuối cùng, có các webhost tập trung vào WordPress mới nổi chuyên về hiệu suất chẳng hạn như WP Engine , ZippyKid và những người khác:

Vì vậy, tin tốt là tất cả các tỷ lệ rất độc đáo ; từ mức rất thấp miễn phí và dễ dàng với độ phức tạp kỹ thuật và chi phí chỉ tăng lên khi lưu lượng truy cập tăng đáng kể. Bắt đầu nhỏ với WordPress và nó sẽ rất tuyệt. Nếu lưu lượng truy cập của bạn tăng lên và bạn đang kiếm tiền thậm chí là hợp lý, bạn sẽ thấy nó có hiệu quả rất lớn về quy mô khi bạn cần.

Ít nhất là IMO. :)

37
MikeSchinkel
  1. Đừng mong đợi nhiều từ lưu trữ được chia sẻ - đừng đổ lỗi cho WordPress vì sự chậm chạp nếu bạn đang sử dụng Máy chủ được chia sẻ. Các máy chủ được chia sẻ có thể nhồi nhét 1000 tài khoản vào một máy chủ. Vì vậy, bạn có thể dành cả ngày để tối ưu hóa tài khoản $ 10/tháng và điều đó không thành vấn đề. Ngoài ra, hãy coi chừng buzzwords tiếp thị - chỉ vì nó nói "đám mây" không có nghĩa là bạn không chia sẻ một máy chủ với 100 hoặc 1000 người.

  2. Tôi không nghĩ các plugin cache là cần thiết vào thời điểm này. Nếu bạn nhìn vào mã nguồn WP, thì đã có bộ nhớ đệm nâng cao được đưa vào lõi. Một bộ đệm của bộ đệm của bộ đệm của bộ đệm - xem ra, điều này có thể phản tác dụng.

  3. Điều chính làm bạn chậm lại là các truy vấn MySQL chậm và WordPress không sẵn sàng gây rắc rối cho bạn ở đây. Tuy nhiên, tôi đã phải "GIỚI HẠN" các truy vấn bình luận của mình vì tôi có hơn 50.000 bình luận. (Điều này đã được sửa chưa?) Ngoài ra, nếu bạn đang làm bất cứ điều gì không điển hình (như 1000 danh mục?) Cũng có thể là một vấn đề.

  4. Tôi sử dụng Linode 512 với NginX và các chương trình "top" PHP và NginX thực hiện công việc của họ trong chưa đầy 1/100 giây mỗi yêu cầu. Gần như tất cả thời gian CPU được gắn với MySQL. Bạn có thể phục vụ 1 triệu trang mỗi tháng với Linode 20 đô la, nhưng một khi bạn bắt đầu thêm plugin và ảnh, tôi nghĩ bạn sẽ cần Linode "1GB". Theo quan điểm của tôi, nó khá tuyến tính: Nếu số lần xem trang tăng gấp đôi, chỉ cần tăng gấp đôi kích thước Linode của bạn.

Tuyên bố miễn trừ trách nhiệm: Tôi không làm việc cho Linode.


Cập nhật (~ 2 năm sau) vì bạn muốn lưu trữ các phần của trang bằng PHP, đây là một giải pháp đơn giản mà tôi sử dụng nhanh đến mức đáng ngạc nhiên. Tôi đang lưu trữ một số phần/phần riêng biệt trên mỗi trang trong vòng 1/100 giây. Có vẻ như một ramdisk có thể làm điều này thậm chí nhanh hơn nhưng nó rất nhanh cho nhu cầu của tôi:

$cache_file = "./cache/portion-1". $since; // maybe round() this $since timestamp
$cache_life = 1000; // seconds to keep this cached
$filemtime = filemtime($cache_file);  // returns FALSE if file does not exist
if (!$filemtime or (time() - $filemtime >= $cache_life)) {

    // heavy lifting starts
    $output = 'Heavy!';
    // heavy lifting ends

    if (!file_put_contents($cache_file,$output,LOCK_EX)) { echo 'error'; } // save the cache    
    echo $output;

} else { 

    // load from cache
    $output = file_get_contents($cache_file); 
    echo $output;        
} 
4
PJ Brunet

Cuối cùng, có 3 điều làm chậm WordPress ở quy mô và họ hiểu rõ điều này:

  • Ngăn xếp lưu trữ - bạn cần một Máy chủ lưu trữ tốt với phần mềm mới nhất - PHP 7, Nginx, Varnish, Redis, fail2ban và PerconaDB đều là những lựa chọn tốt
  • Không quét bảng - nhiều plugin được viết bởi các lập trình viên nghiệp dư, những người thậm chí không biết quét bảng là gì. Cần có hai điều để tránh quét bảng - chỉ mục có thể sử dụng và truy vấn được viết theo cách có thể sử dụng chỉ mục
  • Không có hoặc một vài truy vấn SQL bên trong PHP vòng lặp - một số mã plugin rõ ràng chỉ được thử nghiệm trên các trang web nhỏ và vì lý do này hay lý do khác sẽ lặp qua mọi sản phẩm trong cơ sở dữ liệu của bạn và thực hiện cuộc gọi SQL mới cho mỗi sản phẩm /bài đăng. Bạn lý tưởng muốn có ít hơn 100 truy vấn SQL trên mỗi trang - nghe có vẻ nhiều, nhưng thực sự không phải vậy và với <100 bạn sẽ nhận được một TTFB trong khoảng 200ms không bị chặn.

Khi bạn đã có những thứ ở trên, bạn có thể thêm bộ nhớ đệm - ví dụ: Varnish, CDN, bộ nhớ đệm trang, vv.

Nếu bạn cần mở rộng quy mô, bạn có thể tạo một cụm bằng PerconaDB XtraDB cho cơ sở dữ liệu và Unison cho các tệp. Bằng cách đó, bạn có thể có 1 nút làm người chạy wp-admin và cron của mình và các nút khác phục vụ lưu lượng truy cập web phía sau bộ cân bằng tải.

0
Dave Hilditch