tăng tốc độ trang web drupal


7

Tôi đang sử dụng một trang web drupal với chủ đề từ rockettheme.

Người dùng là người dùng thành viên. Vấn đề là không rõ lý do trang web rất chậm. Mất khoảng 20 giây để mở trang.

Tôi đã thử chuyển đổi VPS, nhưng không đạt được hiệu suất.

Tôi không sử dụng nhiều mô-đun, điều đó sẽ làm hỏng trang web.

Những giải pháp khả thi nào tôi nên xem xét để tăng tốc độ của trang web để đưa nó mở trong thời gian bình thường.

Đã thực hiện 120 truy vấn trong 113,52 mili giây. Các truy vấn mất nhiều hơn 5 ms và các truy vấn được thực hiện nhiều lần, được tô sáng. Thời gian thực hiện trang là 2534,15 ms.

Đã thực hiện 87 truy vấn trong 24,6 mili giây. Các truy vấn mất nhiều hơn 5 ms và các truy vấn được thực hiện nhiều lần, được tô sáng. Thời gian thực hiện trang là 2609,59 ms.

Đã thực hiện 123 truy vấn trong 41,05 mili giây. Các truy vấn mất nhiều hơn 5 ms và các truy vấn được thực hiện nhiều lần, được tô sáng. Thời gian thực hiện trang là 1282,27 ms.

Tôi không đoán đây là bình thường.


Là 20 giây trước khi trang thậm chí bắt đầu tải, hoặc tổng cộng 20 giây?
DisgruntledGoat

Bạn nhấn mạnh người dùng thành viên , đó thực sự sẽ là một gợi ý quan trọng, vì vậy hãy chắc chắn: bạn có ngụ ý 20 giây không chỉ áp dụng cho người dùng đã đăng nhập, nhưng không dành cho khách truy cập trang web ẩn danh?
Steffen Opel

Thời gian dành cho người dùng ẩn danh. Tôi không biết nếu tôi được phép, tôi muốn cung cấp liên kết trang web, để một số lỗ hổng tinh vi có thể được chỉ ra bởi cộng đồng ở đây.
Nikhil

Bạn có thể vui lòng chỉ định các phiên bản tương ứng của các thành phần sau đang sử dụng: Drupal, jQuery, MooTools (sẽ nói thêm về điều đó sau); lý tưởng là Apache, PHP, MySQL cho sự hoàn thiện là tốt. Không thể nhìn vào trang web, thông tin này sẽ dễ dàng đánh giá đúng về các hiện vật khác nhau được trình bày / thảo luận vẫn còn.
Steffen Opel

Tôi đã cập nhật câu trả lời của mình về các xung đột có thể có giữa jQuery và MooTools - vui lòng vẫn cung cấp các phiên bản được yêu cầu nếu có thể.
Steffen Opel

Câu trả lời:


1

Cập nhật:

Tôi đã tìm thấy một tệp cụ thể mootools.js mất rất nhiều thời gian để tải trong ylsow, nhưng mở tệp trực tiếp - không có độ trễ.

Cuối cùng, đó là một gợi ý khá hay - MooTools có thực sự cần thiết không? Drupal chỉ sử dụng jQuery trong lõi và hầu hết các mô-đun đóng góp cũng vậy, vì vậy xin lưu ý rằng việc sử dụng nhiều hơn một khung JavaScript chính cùng một lúc, trong khi có thể, thường không được hầu hết các nhà phát triển khuyến nghị, thường yêu cầu xử lý chuyên dụng ít nhất và có thể giới thiệu tất cả các vấn đề kỳ lạ (nghĩa là khó gỡ lỗi) bất kể:
Bạn sẽ tìm thấy nhiều bài đăng liên quan trong jQuery + MooTools trên Stack Overflow, hãy xem câu trả lời mẫu mực này cho Mootools và JQuery Integration đề cập đến việc làm chậm trang cụ thể.

Vì bạn không sử dụng nhiều mô-đun, tôi cho rằng chỉ có một khu vực chức năng bị cô lập đang yêu cầu cụ thể cho MooTools, do đó tôi khuyên bạn nên tắt hoàn toàn (nghĩa là đảm bảo mootools.js không được tải nữa) và xem liệu nó có khác biệt gì không.


Bạn có thể kiểm tra các câu trả lời khác nhau cho một câu hỏi tương ứng trên Stack Overflow - trong khi chúng hầu như trùng lặp với những câu hỏi được đưa ra ở đây trong thời gian này, có một số thông tin chi tiết bổ sung trong các bình luận ở đây và ở đó.

Ngoài ra, tôi muốn nhấn mạnh một điều quan trọng một lần nữa, như được đề cập bởi DisgruntledGoat và bpeterson76 ở một mức độ nào đó (+1 mỗi cái):

Mặc dù Drupal không phải là CMS nhanh nhất ở nơi đầu tiên, thời gian tải trang mà bạn đang thấy không bình thường chút nào (mặc dù có thể trên các hệ thống / máy chủ được cấu hình kém) - do đó bạn thực sự nên phân tích và xác định nguyên nhân trước tiên , trước khi áp dụng tối ưu hóa bất kỳ loại nào! Chắc chắn, một số tối ưu hóa được đề xuất có thể giúp ngay cả khi không có điều đó, nhưng nguyên tắc vàng cho tối ưu hóa hiệu suất (và khác) thực sự là hiểu vấn đề hơn là thử và sai.

Để giúp bạn bắt đầu, tôi muốn bình luận về ba chủ đề được nêu ra một cách cụ thể và cung cấp một con trỏ đến tài liệu kỹ lưỡng hơn về vấn đề dưới đây:

Tôi đã thử chuyển đổi VPS, nhưng không đạt được hiệu suất

  • Được rồi, bạn vẫn nên kiểm tra một cách rõ ràng, liệu ngăn xếp VPS và LAMP đang sử dụng có hoạt động bình thường ở nơi đầu tiên (tức là không có Drupal) không?
    • Câu trả lời từ địa chỉ bpeterson76 có thể gây ra.

Tôi nghĩ thủ phạm chính là chủ đề.

  • Sau đó, bạn nên xác minh giả định này, dễ dàng thực hiện bằng cách chuyển sang chủ đề khác, tốt nhất là một chủ đề có các đặc điểm hiệu suất đã biết, ví dụ như chủ đề Vòng hoa mặc định.

Tôi không nghĩ rằng truy vấn SQL có lỗi.

  • Bạn đã nhận ra rằng bạn cũng nên xác minh giả định này - điều này có thể được tiếp cận theo nhiều cách khác nhau, tôi bắt đầu với mô-đun phát , có nhiều ưu đãi khác nhau về Ghi nhật ký hiệu suất bao gồm cả thời gian thực hiện SQL (tất nhiên các công cụ khác cũng hữu ích ).
    • Xin lưu ý rằng để có thời gian thực thi SQL chính xác hơn, bạn nên sử dụng các công cụ chuyên dụng cho hệ thống cơ sở dữ liệu đang sử dụng.

Tất cả điều này, và nhiều hơn thế nữa, được giải quyết thông qua bộ nhớ đệm, tốc độ và hiệu suất của Drupal - trung tâm tài nguyên này có thể trông có vẻ áp đảo ngay từ cái nhìn đầu tiên, nhưng như tôi đã nói, hiểu vấn đề là chìa khóa để giải quyết các vấn đề về hiệu suất - để cho phép bắt đầu nhảy cuối cùng, tôi đặc biệt khuyên bạn nên đọc các cân nhắc điều chỉnh Máy chủ , đặc biệt là phần Hiểu và định cấu hình ngăn xếp của bạn để thực hiện .

Chúc may mắn!


Ouch, chỉ nhận ra rằng bạn đã bắt đầu với mô-đun phát trong thời gian này, xin lỗi (đã bị phân tâm trong khi viết và quên kiểm tra lại trước khi đăng) - Tôi sẽ giữ câu trả lời cho đến lúc này và xem xét điều chỉnh hoặc xóa nó cuối cùng tùy thuộc vào cách chủ đề phát triển.
Steffen Opel

Cảm ơn cho một đầu vào giữ. Vì bạn đã thấy nhật ký phát. Tôi sẽ rất hữu ích khi biết điều gì có thể khiến thời gian thực hiện Trang tăng cao. Điều gì nên là bình thường. Điều này chắc chắn sẽ giúp tôi trong việc đi đến gốc rễ của vấn đề.
Nikhil

4

Nếu tải trang là 20 giây thì có khả năng tắc nghẽn lớn ở đâu đó. APC có thể giảm xuống còn 5-10 giây nhưng điều đó vẫn chưa thực sự đủ tốt cho phía máy chủ. Và nó sẽ không hữu ích nếu nút cổ chai là một truy vấn SQL.

Các mô-đun có thể làm chậm trang web một chút nhưng không nhiều. Hãy thử vô hiệu hóa lần lượt từng cái để xem có cải tiến lớn nào không.

Một giải pháp khác nếu bạn không thể cải thiện tốc độ đó là lưu trữ các trang càng nhiều càng tốt. Với nhiều trang web khác nhau (sử dụng CodeIgniter) tôi đã thấy rằng nó tạo ra sự khác biệt lớn - máy chủ phản hồi ngay lập tức và bạn thực sự chỉ có thời gian ở phía máy khách.

Tùy thuộc vào những gì bạn bao gồm trong độ trễ 20 giây (ví dụ: chỉ phía máy chủ hoặc phía máy khách), bạn có thể thấy trang Thực tiễn tốt nhất của Yahoo hữu ích.


Để xác định vị trí nút cổ chai ở đâu, hãy xem các mô-đun trình lược tả cho Drupal (nếu có), họ sẽ cho bạn biết phần nào mã bị chậm. Hoặc, bạn có thể thêm mã thời gian của riêng mình vào mẫu:

$time1 = microtime();
// some chunk of code
$time2 = microtime();
// another chunk of code
$time3 = microtime();
echo 'First chunk: ', ($time2-$time1/1000), ' seconds';
echo 'Second chunk: ', ($time3-$time2/1000), ' seconds';

Lặp lại điều đó ở nhiều nơi khác nhau và bạn sẽ có thể thu hẹp nó xuống một hoặc hai phần đang chạy trong 10-20 giây.


Tôi không nghĩ rằng querry SQL có lỗi .. Tôi nghĩ thủ phạm chính là chủ đề, nhưng để chắc chắn rằng SQL vẫn ổn, tôi nên tiến hành như thế nào.
Nikhil

@Nikhil: Bạn đã thử các chủ đề khác nhau? Nếu vấn đề biến mất với một chủ đề khác (sử dụng cùng các mô-đun) thì chắc chắn đó là vấn đề.
DisgruntledGoat

Tôi có thể sai, tôi chỉ đăng kết quả ghi nhật ký hiệu suất mô-đun phát. Có phải SQL cũng có lỗi.
Nikhil

@Nikhil: Có, hơn 80 truy vấn cho một trang là một quá nhiều! Nhưng họ nói rằng họ chỉ mất 113 ms nên không có khả năng gây ra vấn đề lớn.
DisgruntledGoat

Vì vậy, tôi đã đúng các truy vấn SQL không có lỗi. Nó có nhiều khả năng là một vấn đề chủ đề. Tôi đang cài đặt APC. Tôi cho biết sự tiến bộ, để những người khác có thể có lợi.
Nikhil

3
  • Sử dụng bộ đệm opcode như APC
  • Sử dụng một công cụ như xDebug để xem nơi tắc nghẽn của bạn. Bằng cách đó bạn biết những gì bạn cần giải quyết thay vì chỉ đoán.

vâng, tôi đã suy nghĩ tương tự .. Tôi thấy trên một số trang web, họ đã đo thời gian trên máy chủ của họ để thực hiện các truy vấn. Làm thế nào tôi có thể làm điều đó quá. Thời gian 20 giây tôi đã đo bằng cách đếm. Có một số hệ thống có sẵn để làm điều này.
Nikhil

2

Khi xây dựng các ứng dụng PHP, tôi thấy rằng tôi có thể loại bỏ các tắc nghẽn ở mức độ thấp bằng các công cụ dành cho nhà phát triển của Firefox hoặc Chrome. Nhấp vào tab tài nguyên và xem như các yếu tố của tải trang. Điều này đặc biệt có giá trị khi bạn làm việc với các yêu cầu XHR (AJAX).

Bắt đầu bằng cách ping máy chủ. Tôi có một máy Dev đã ở trong tình huống tương tự vào một ngày khác .... Máy Dev đang bò, mất hơn 10 giây để tải. Nhưng, tôi có mã giống hệt nhau trên một máy chủ giống hệt (nhưng chuyên dụng) khác chạy rất nhanh. Làm các bài kiểm tra ping, nó rất chậm. Hóa ra, máy được chia sẻ và một trong những người khác có tài khoản trên máy chủ đang chạy một trang web có băng thông cực cao (có thể là trang dành cho người lớn) đang làm chậm mọi người khác. Trang web vi phạm đó hiện đang được chủ nhà chuyển đi.

Xdebug chắc chắn là một lựa chọn tốt như đã đề cập ở trên. Nhưng nó không phải lúc nào cũng đi đến nguồn gốc của vấn đề nếu không có lỗi nào được đưa ra. Tôi sẽ bắt đầu với nhật ký lỗi trước, đảm bảo sẽ không được tạo nữa. Sau đó, Xdebug.

Tôi sẽ làm theo với việc vô hiệu hóa từng tính năng một. Ngoài ra, đáng để theo dõi tải máy chủ để đảm bảo rằng một cái gì đó không liên quan sẽ không làm chậm quá trình MySql hoặc Apache.

Cuối cùng, nếu sự cố vẫn chưa được khắc phục, tôi sẽ cách ly các khu vực tôi nghĩ đang gây ra sự cố và chèn dấu thời gian microtime bắt đầu / kết thúc mà tôi xuất ra để đăng nhập hoặc gửi email. Nghe có vẻ ngớ ngẩn dễ dàng, nhưng tôi đã tìm thấy tăng 200% hiệu suất trong mã bằng phương pháp này.


Theo lời khuyên của bạn, tôi đã sử dụng yslow trong firebird bằng mozilla. Tôi đã tìm thấy một tệp cụ thể mootools.js mất rất nhiều thời gian để tải trong ylsow, nhưng mở tệp trực tiếp - không có độ trễ.
Nikhil

drupal đang chạy trên vps, đã thử vô hiệu hóa các tính năng - không tìm thấy sự cố nào. Tôi đoán, tôi sẽ thử với Xdebug.
Nikhil

1
Nikhil, một cải tiến tốc độ đã được tranh luận nhiều lần trên stack * là tải các tệp khung JS của bạn từ CDN như Google. Đây là liên kết để bắt đầu: code.google.com/apis/lologists/devguide.html . Tôi không chắc đó là những gì bạn muốn nói bằng cách mở trực tiếp, nhưng nó có thể giúp ích.
bpeterson76

1

bộ nhớ đệm được bật trong /admin/settings/performance?

Cần kiểm tra lại trước khi bạn có được các giải pháp phức tạp hơn.


Tôi biết điều đó hơi rõ ràng nhưng tôi cảm thấy nó phải được đề cập
WalterJ89

Bộ nhớ đệm đáng để bật nhưng điều đó không giải quyết được vấn đề ban đầu. Mỗi giờ một lần (hoặc tuy nhiên bộ nhớ cache dài), người dùng sẽ phải chờ 20 giây để trang được tạo.
DisgruntledGoat

vâng, nó được bật Cảm ơn đã chỉ nó mặc dù.
Nikhil

0

Tôi khuyên bạn nên sử dụng Postgresql, drupal hỗ trợ nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.