Tôi có một trang web (với ESI) sử dụng proxy ngược Symfony2 để lưu vào bộ nhớ đệm. Phản hồi trung bình là khoảng 100ms. Tôi đã cố gắng cài đặt Varnish trên máy chủ để dùng thử. Tôi theo sau guide from Symfony cookbook từng bước, xóa mọi thứ trong thư mục cache
nhưng thư mục http_cache
vẫn được tạo khi tôi dùng thử. Vì vậy, tôi đã tìm tôi có thể thử nhận xét ra $kernel = new AppCache($kernel);
từ app.php
. Điều đó làm việc khá tốt. http_cache
không được tạo ra nữa và bởi varnishstat, Varnish dường như làm việc:Làm thế nào để thiết lập đúng Varnish cho các trang Symfony2?
12951 0.00 0.08 cache_hitpass - Cache hits for pass
1153 0.00 0.01 cache_miss - Cache misses
Đó là ra khoảng 14000 yêu cầu, vì vậy tôi nghĩ mọi chuyện rồi sẽ ổn thôi. Nhưng sau khi vang lên, tôi phát hiện ra những phản hồi được nâng lên ~ 2 giây.
Apache chạy trên cổng 9000 và Varnish trên 8080. Vì vậy, tôi đang sử dụng chế độ xem echoping -n 10 -h http://servername/ X.X.X.X:8080
.
Tôi không biết điều gì có thể sai. Có bất kỳ cài đặt bổ sung cần thiết để sử dụng Varnish với Symfony2? Hay tôi đơn giản làm điều gì đó sai?
Theo yêu cầu, đây là số default.vcl
của tôi với các sửa đổi mà tôi đã thực hiện cho đến thời điểm này.
tôi thấy 2 vấn đề với cấu hình mặc định Varnish của:
- nó không yêu cầu bộ nhớ cache với cookie (và tất cả mọi người trong ứng dụng của tôi đã phiên giao)
- nó bỏ qua
Cache-Control: no-cache
tiêu đề
Vì vậy, tôi đã thêm điều kiện cho những trường hợp này vào cấu hình của tôi và nó hoạt động khá tốt ngay bây giờ (~ 175 req/s lên từ ~ 160 với proxy ngược S2 - nhưng thành thật mà nói, tôi mong đợi nhiều hơn một chút). Tôi chỉ không có ý tưởng làm thế nào để kiểm tra xem đó là tất cả các thiết lập ok, vì vậy bất kỳ đầu vào được chào đón.
Hầu hết các trang có bộ nhớ cache khác nhau theo cookie, với s-maxage
1200. ESI chung bao gồm không khác nhau theo cookie, với s-maxage
khá thấp (bài viết, danh sách bài viết). Các trang hồ sơ người dùng không được lưu trữ ở tất cả (no-cache
) và tôi không thực sự chắc chắn liệu ESI có bao gồm những trang này thậm chí được lưu trữ bởi Varnish hay không. Chỉ có ESI khác nhau theo cookie là tiêu đề với thông tin cụ thể của người dùng (trên 100% số trang).
Mọi thứ trong bài đăng này là Varnish 3.X cụ thể (Cá nhân tôi đang sử dụng 3.0.2).
Ngoài ra, sau vài tuần đào sâu vào điều này, tôi thực sự không biết mình đang làm gì nữa, vì vậy nếu bạn thấy điều gì đó lạ trong cấu hình, hãy cho tôi biết.
5 xu dựa trên kinh nghiệm gần đây của tôi. Nó hoàn toàn phụ thuộc vào cấu hình Vasnish và đặc biệt là bạn có đủ bộ nhớ cho nó hay không. Bạn có thể vui lòng hiển thị 'sub vcl_recv',' sub vcl_fetch' và 'backend'? –
Cập nhật bài đăng gốc với cấu hình. Một điều khác mà tôi nghĩ đến là cookie của người dùng (và có thể là các cookie theo dõi). Mọi yêu cầu trên trang của chúng tôi đều có chúng. Nhưng tôi không hiểu tại sao varnishstat nói rằng nó đang lưu lại 90% yêu cầu. Chúng tôi không bao giờ gặp vấn đề với họ khi chúng tôi sử dụng proxy ngược Symfony2. –
Tôi có 'vcl_recv' tương tự trên thiết lập của mình, mặc dù tôi cũng có những dòng này:' set req.http.X-Forwarded-Port = "80"; đặt req.http.X-Forwarded-Proto = "http"; ' –