2012-04-23 14 views
5

Tôi đang sử dụng PHP APC trên các máy chủ sản xuất của dịch vụ web với lượt truy cập 10 triệu/ngày thành công trong một thời gian dài.có phải PHP APC là cửa hàng đối tượng địa phương có bất kỳ giới hạn nào ngoài kích thước lưu trữ không?

Tôi đang xem xét giảm tải nhiều dữ liệu hơn vào bộ nhớ cache cục bộ APC.

Về mặt lý thuyết có vẻ với tôi rằng vì cuộc gọi APC chủ yếu là truy cập bộ nhớ cục bộ. Nó không nên trở thành một vấn đề để gọi nó là 10.000 lần/giây. Theo như tôi có thể nói giới hạn của nó có thể ở kích thước bộ nhớ nhưng miễn là máy chủ có CPU miễn phí, nó không nên có hiệu suất hoặc các vấn đề tham nhũng ở mức giá cao.

Có giới hạn nào mà tôi không biết điều đó có thể ngăn tôi sử dụng bộ nhớ cache đối tượng cục bộ của APC với tốc độ rất cao trên máy chủ ứng dụng (ubuntu) hay không.

Cập nhật: Dường như theo các câu trả lời bên dưới câu hỏi của tôi không rõ ràng. Tôi không tìm kiếm các tùy chọn bộ nhớ đệm thay thế (memcache, redis, vv ..). Câu hỏi của tôi là liệu có bất kỳ mối quan tâm hoặc giới hạn nào trong việc sử dụng APC địa phương với mức giá rất cao và đọc đồng thời hay không.

+0

Không thể truy cập bộ đệm APC của máy chủ từ máy chủ khác nếu bạn đang ở trong môi trường nhiều máy chủ ... APC không thể chia sẻ với/giữa các tác vụ CLI –

+0

có. Tôi biết. cho điều này tôi sẽ sử dụng memcached như bộ nhớ cache cấp 2 vì vậy khi một máy chủ ứng dụng mới lanunches nó sẽ đọc dữ liệu từ memcache và không phải là db. nhưng trong các hoạt động thường xuyên, tôi cần dữ liệu càng gần càng tốt để nó sẽ được sao chép trên máy chủ ứng dụng. – Nir

+1

Yêu thích câu hỏi này và APC là một lớp bộ nhớ đệm hoàn toàn không được sử dụng đúng mức. Rất muốn biết câu trả lời cho điều này là tốt. – nate

Trả lời

4

Cá nhân tôi là người hâm mộ lớn sử dụng memcached cho loại lưu trữ này. Nó có một số lợi thế:

  • Chương trình tập trung hoàn toàn vào lưu trữ và phát triển memcached sẽ luôn tập trung vào điều đó. APC chủ yếu là bộ nhớ cache cho mã, điều này chỉ xảy ra để cung cấp một số quyền truy cập vào bộ nhớ người dùng.
  • Khi bạn tải lại hoặc khởi động lại Apache (hoặc bất kỳ máy chủ web nào bạn sử dụng), bộ đệm ẩn của APC sẽ bị làm trống. Khi bạn sử dụng một giải pháp độc lập như memcached, bạn có thể kiểm soát khi bộ nhớ cache bị làm trống. Đây thực sự là điều quan trọng trong trường hợp của tôi, vì đôi khi tôi phải thay đổi cấu hình của Apache và thực sự không muốn xóa bộ nhớ cache khi tôi làm, vì nó tạo ra một CPU lớn (tải dữ liệu vào bộ nhớ cache một lần nữa).
  • Nó có khả năng tạo bộ nhớ cache được phân phối, làm cho nó có khả năng mở rộng hơn. Khi bạn phải thêm một máy chủ thứ hai vì trang web của bạn trở nên lớn, bạn không muốn hai bộ đệm lưu trữ cùng một thứ. memcached quy mô tốt, trong khi bộ nhớ cache của APC không.

Có nhiều lợi ích khác khi sử dụng memcached trên bộ đệm người dùng của APC, nhưng đối với tôi, đây là ba lý do chính để không sử dụng bộ nhớ cache người dùng của APC. Tôi sử dụng APC, tất nhiên, không phải là bộ nhớ cache của người dùng.

+0

Và một lưu ý RE: @ MarkBaker của bình luận về câu hỏi: memcached ** có thể ** được chia sẻ giữa các nhiệm vụ CLI, và rất hữu ích trong môi trường đa máy chủ. –

+0

redis thậm chí còn tốt hơn vì nhiều máy chủ redis có thể sao chép dữ liệu được lưu trữ ... vì vậy nếu bạn mất một máy chủ từ cụm thì dữ liệu vẫn có sẵn trong các máy chủ khác .... cộng với gee-whiz nhanh –

+0

Xin chào Tom, Tôi sử dụng memcached cho một phần của dữ liệu. Đối với các dữ liệu cụ thể tôi muốn thêm tôi cần một cái gì đó nhanh hơn nhiều so với memcache. Tôi có kế hoạch sử dụng memcache như bộ đệm giai đoạn 2 cho dữ liệu cụ thể này vì vậy nếu nó không phải trong APC memcached sẽ được tìm kiếm và nếu nó không có db sẽ được nhấn. Lý do chính là khi các máy chủ ứng dụng bổ sung được khởi chạy, tôi không muốn db được truy cập cho dữ liệu cụ thể này. – Nir

Các vấn đề liên quan