Chúng tôi đang sử dụng django để tạo một json webservice front-end cho mysql. Chúng ta có apache và django chạy trên một cá thể EC2 và MySQL chạy trên một cá thể RDS. Chúng tôi đã bắt đầu hiệu suất điểm chuẩn bằng cách sử dụng băng ghế dự bị apache và có một số hiệu suất thực sự kém. Chúng tôi cũng nhận thấy rằng trong khi chạy các thử nghiệm, ví dụ apache/django của chúng tôi đi đến 100% sử dụng CPU ở tải rất thấp và trường hợp MySQL không bao giờ được sử dụng trên 2% cpu.Có cách nào để tăng tốc độ chức năng xác thực trong django không?
Chúng tôi đang cố gắng để làm cho cảm giác này và cô lập các vấn đề, vì vậy chúng tôi đã làm một số xét nghiệm ab:
- Một yêu cầu cho một trang html tĩnh từ apache - ~ 2000 yêu cầu/giây.
- Yêu cầu thực hiện hàm python nhỏ trong django và không có tương tác db - ~ 1000 yêu cầu/giây.
- Yêu cầu thực hiện một trong các chức năng dịch vụ web django của chúng tôi gọi xác thực và sau đó thực hiện truy vấn rất đơn giản để tìm nạp một bản ghi từ bảng - 11 yêu cầu/giây
- Giống như 3, nhưng đã nhận xét cuộc gọi để xác thực - - 95 yêu cầu/giây.
Tại sao xác thực quá chậm? Có phải nó đang ghi dữ liệu vào db, tìm kiếm một tỷ chữ số pi, cái gì?
Chúng tôi muốn giữ cuộc gọi để xác thực trong các chức năng này, bởi vì chúng tôi không muốn để chúng mở cho bất kỳ ai có thể đoán url, v.v. Có ai ở đây nhận thấy rằng xác thực chậm và ai có thể đề xuất một cách để khắc phục nó?
Cảm ơn bạn rất nhiều!
Hãy thử một vài điều: tải xuống django-debug-toolbar và đọc đầu ra. Xem loại truy vấn mà nó đang thực hiện. Hãy thử django-profile và đọc thời gian thực hiện chức năng. Cuối cùng, có được newrelic ... thậm chí phiên bản miễn phí sẽ cho bạn thấy sự cố hữu ích cho mỗi lượt xem func. Vui mừng khi nghe một số kết quả! –