Cài đặt APC tốt nhất để giảm thời gian thực hiện trang


16

Tôi có Drupal 7, apc với php-fpm và apache đằng sau véc ni và 512 MB RAM.

Tôi đo thời gian thực hiện trang với mô-đun phát.

Thời gian truy vấn cơ sở dữ liệu thấp (62ms) so với thời gian thực hiện trang là 854 ms. Điều đó có nghĩa là có vấn đề với cài đặt PHP và APC.

Cài đặt hiện tại của tôi chỉ là

apc.shm_size = 64
apc.stat=1 

Làm thế nào tôi có thể cải thiện?

Các cài đặt tốt nhất cho Drupal cho cấu hình trên là gì?

Cảm ơn

Câu trả lời:


12

Chúng tôi chạy trong môi trường đẩy SVN vì vậy chúng tôi chỉ xóa bộ đệm tệp apc bằng một tập lệnh.

Cài đặt APC:

apc.ttl=604800
apc.user_ttl=3600
apc.shm_size=192M
apc.include_once_override=1
auto_globals_jit=Off
apc.num_files_hint = 2048

apc.stat_ctime = 0
apc.file_update_protection = 2
apc.stat = 0

Tập lệnh PHP:

<?php
$return = apc_clear_cache('opcode');
echo var_export($return);

604800 = 1 tuần.

Sau này, nhận xdebug / xhprof và chạy và thực hiện thao tác lưu trữ bộ đệm của trang web sẽ cho bạn biết những gì làm chậm trang web. Tóm lại, phân tích đầu ra xay bộ nhớ cache là cách tốt nhất để tăng tốc Drupal. Dưới đây tôi liệt kê những bản vá và mô-đun chúng tôi sử dụng để tăng tốc nó; trong trường hợp của bạn nó sẽ khác nhau rất có thể.

Drupal 6 câu trả lời cụ thể dưới đây

Một khi bạn vượt qua thời điểm này và thực hiện APC sẽ không cung cấp cho bạn những gì bạn đang tìm kiếm, chuyển sang pressflow và đưa ra các bản vá lỗi một whirl:

Ngoài ra, hãy thử một số mô-đun này khi chúng cải thiện tốc độ trang web của chúng tôi theo một cách lớn:


Cảm ơn rất nhiều vì câu trả lời của bạn, nhưng tôi có Drupal 7.
john

Vì vậy, lấy các phần APC và các phần xdebug / xhprof và xem các bản vá D6 như một ví dụ về những gì cần tìm trong hàng đợi vấn đề. Tất cả các bản vá ở trên, kết quả của việc xem xét bộ đệm, tìm điểm đau và tìm ra vấn đề tương ứng cho nó. Bắt đầu nhanh: drupal.org/project/issues/search/ từ
mikeytown2

Hiện tại có một wiki hiệu suất 7 drupal: Groups.drupal.org/node/210683
mikeytown2

1
Chỉ cần FYI, tôi đã phải bình luận dòng apc.include_once_override = 1 vì đã phá vỡ trang web purgin.org/node/2550/3928
corbacho

php.net/apc.configuration#ini.apc.include-once-override Cảm ơn bạn đã chỉ ra điều đó. Tùy thuộc vào phiên bản PHP và APC, nó có thể gây ra sự cố
mikeytown2

3

Đây là một trong những câu hỏi "câu hỏi chuỗi dài bao lâu".

Điều tốt cho một trang có khối lượng lớn có thể không giống với một trang có khối lượng thấp có nhiều mô-đun và có thể không giống với một trang có khối lượng trung bình chỉ có một vài mô-đun được kích hoạt. Các trang web khác đang chạy trên máy chủ cũng có thể ăn vào bộ nhớ mà APC có sẵn.

Xuất phát điểm của tôi là

apc.enabled=1
apc.shm_segments=1
apc.shm_size=64
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.rfc1867=1

Sau đó tôi điều chỉnh các cài đặt cho máy chủ, nhưng một lần nữa, không có một kích thước nào phù hợp với tất cả các cài đặt.

Tìm apc.php (có thể nằm ở /usr/share/pear/apc.php) và cài đặt nó trong DOCROOT cho cài đặt Drupal của bạn. Khóa nó xuống địa chỉ IP của bạn thông qua cấu hình Apache. Chỉnh sửa tên người dùng / mật khẩu bên trong, và sau đó duyệt đến nó. Sau đó, bạn sẽ thấy số liệu thống kê APC của bạn.

Cấu hình lại tham số shm_size để giảm thiểu lỗi bộ nhớ cache. Lý tưởng nhất là bạn muốn cung cấp cho nó bộ nhớ vừa đủ để không bao giờ bỏ lỡ bộ nhớ cache cho một tệp, cộng với một số bộ nhớ bổ sung cho bộ đệm của người dùng APC.

Tối ưu hóa TTL để ngăn chặn bộ đệm cache. Nếu bạn không chỉnh sửa tập tin, bạn có thể tăng số này.

enable_cli rất tiện lợi khi bạn sử dụng drush rất nhiều, do đó drush sử dụng các tệp được lưu trong bộ nhớ cache từ APC.

rfc1867 là tiện dụng để tải lên tập tin.

Tôi cũng nhận thấy php-fpm trong tiêu đề. Điều này làm phức tạp vấn đề, và thực sự nằm ngoài phạm vi của Câu trả lời Drupal. Bạn có thể nhận được phản hồi tốt hơn tại Server Fault , vì rất nhiều cài đặt cấu hình hệ thống không liên quan trực tiếp đến Drupal.


một số hướng dẫn tốt giải thích bằng ngôn ngữ dễ dàng, mỗi cài đặt đang làm gì, như ttl, phân đoạn, v.v.? Làm thế nào cli giúp với drush?
john

Bạn có thể giải thích làm thế nào "lưu lượng truy cập tôi nhận được, những gì khác đang chạy trên máy chủ, những mô-đun tôi đã cài đặt, v.v." ảnh hưởng đến các cài đặt? cảm ơn
john

những cài đặt trên không giúp được gì nhiều. Tôi có nên thử xhprof để xem điều gì xảy ra với php không?
john

Tất cả các thiết lập APC được mô tả tại php.net/manual/en/apc.configuration.php
mpdonadio

1
@MPD> enable_cli rất tiện lợi khi bạn sử dụng drush rất nhiều, do đó drush sử dụng các tệp được lưu trong bộ nhớ cache từ APC. Trên thực tế, cli là một quá trình riêng biệt và không chia sẻ bộ đệm apc của nó với apache, hoặc thậm chí giữa các cuộc gọi đến drush.
Robin Millette

2

APC chỉ cải thiện việc tải và phân tích tệp PHP. Một phần lớn cũng là thời gian thực hiện chính nó. Có nhiều yếu tố có thể làm tăng thời gian thực hiện, bao gồm các lỗi (đặc biệt là các lỗi liên quan đến bộ đệm), chi phí nội bộ (ví dụ: drupal_alter (), module_implements ()), v.v.

Như bạn đã hỏi và đã được mikeytown2 đề xuất, tôi sẽ sử dụng xhprof (tôi thích nó hơn xdebug những ngày này vì nó cung cấp quyền truy cập trực tiếp, nhanh chóng vào kết quả và không yêu cầu công cụ bổ sung nào) để tìm ra nơi tắc nghẽn của bạn.

Gần đây tôi đã viết hai bài đăng trên blog về việc sử dụng xhprof trong Drupalcác nút thắt thông thường , mà bạn có thể thấy thú vị.


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.