2008-11-20 17 views
7

Tôi bắt đầu tìm hiểu về cách sử dụng Memcached với PHP và tôi đã tự hỏi; có một điểm mà tại đó bạn nên bắt đầu sử dụng nó? Dữ liệu bộ nhớ cache có hiệu quả hơn hay không chỉ hiệu quả khi trang web của bạn nhận được số lần truy cập nhất định? Có lẽ có một chi phí liên quan đến Memcached, vì vậy khi nào tốc độ lợi ích lớn hơn điều này?Khi nào bạn nên bắt đầu sử dụng Memcached?

Cảm ơn trước vì lời khuyên nào.

Trả lời

9

Bạn nên bắt đầu sử dụng memcached khi không sử dụng nó bắt đầu ảnh hưởng đến trang web/máy chủ của bạn.

Vì vậy, khi bạn chỉ có 100 khách truy cập mỗi ngày và trang web của bạn vẫn phản hồi nhanh chóng, đừng bận tâm sử dụng nó.

Nhưng khi bạn có thời gian chạy ở đâu đó gần 200ms trở lên trên mỗi trang và trang web cũng cảm thấy chậm, bạn nên tìm kiếm các nút cổ chai bằng cách sử dụng một số lược tả PHP (XDebug tích hợp một cái mà bạn có thể sử dụng kết hợp với WinCacheGrind hoặc KCacheGrind)). Đặc biệt là bộ nhớ đệm yêu cầu cơ sở dữ liệu nên giúp bạn tiết kiệm thời gian tải.

+1

Tôi nghĩ rất khó để định lượng bằng cách sử dụng thời gian phản hồi, nên dựa trên trải nghiệm người dùng và khi họ cảm thấy nó đang chậm. – DreamWerx

+0

Vâng, tôi đã không giải thích tốt, tôi sẽ thay đổi điều đó. Tôi có nghĩa là thời gian chạy kịch bản, –

+0

Ngoài ra - bạn vẫn có thể sử dụng APC làm bộ đệm dữ liệu (để truy vấn bộ nhớ đệm db, v.v.).Bộ đệm dữ liệu APC nhanh hơn 5-6 lần so với memcached. Tôi chỉ sử dụng memcached nếu bạn phục vụ dữ liệu từ nhiều máy chủ (cụm) và người dùng phải có khả năng truy cập cùng một dữ liệu (ví dụ: phiên) – Stann

5

Quy tắc số 1 khi nói đến tối ưu hóa hiệu suất là: Không tối ưu hóa cho đến khi bạn cần!

Nếu bạn không gặp vấn đề về hiệu suất, thì bạn không cần phải tối ưu hóa. Các quy tắc tốt khác bao gồm:

  • Đừng tối ưu hóa cho đến khi bạn viết xong đơn đăng ký. Bạn hiếm khi biết các vấn đề về hiệu suất trong thế giới thực sẽ tăng lên khi phát triển và nó sẽ chỉ làm cho mã của bạn sloppier và khó sửa đổi hơn khi bạn cần thay đổi đường.

  • Sử dụng trình thu thập thông tin hoặc một số cách khác để đo các đoạn mã cụ thể để thực sự đo lường những gì đang mất nhiều thời gian và tối ưu hóa các phần đó. Đừng chỉ đoán những gì đang diễn ra trong một thời gian dài. Thực sự đo lường nó.

3

Nếu bạn đang sử dụng MySQL làm cơ sở dữ liệu, hãy chạy lệnh showlist trên bảng điều khiển MySQL trong thời gian cao điểm. Nếu có nhiều truy vấn từ phía PHP chờ đợi hơn 500 mili giây thì đó là lúc bạn chuyển sang memcached.

1

Đầu tiên hãy nghĩ về cái/khi/nếu lưu vào bộ nhớ cache, trước khi bạn nghĩ về việc liệu bạn có nên sử dụng Memcached để lưu bộ nhớ đệm hay không.

Khi bạn có một số "đối tượng" được sử dụng để phản hồi yêu cầu mất của cơ sở dữ liệu đọc để tạo. Và trang web của bạn không thể theo kịp tải của nó do tái tạo "đối tượng" đó. Bạn cũng cần một khóa được định nghĩa tốt cho mục bạn đang lưu trong bộ nhớ đệm.

"Đối tượng" bạn đang lưu vào bộ nhớ đệm phải được đọc nhiều hơn sau đó các hàng cơ sở dữ liệu được sử dụng để tạo ra nó bị thay đổi, nếu không thì lợi ích của bộ đệm có thể sẽ ít chi phí quản lý bộ nhớ cache sau một chút dữ liệu được thay đổi.

Caching các hàng cơ sở dữ liệu đơn lẻ sẽ không cung cấp cho bạn lợi ích phù hợp.