2012-06-05 29 views
5

Tôi đã bật SSL trên máy chủ proxy của mình và nhận thấy hiệu suất đã giảm từ khoảng 17 nghìn yêu cầu mỗi giây xuống còn 5k yêu cầu mỗi giây. Tôi đã theo mã trong ví dụ trò chuyện an toàn của Netty và tôi không nghĩ mình đã làm gì khác đi.Làm cách nào để tăng hiệu suất SSL máy chủ

Tôi đã viết một máy chủ giả để xem tôi đã phạm phải một số lỗi trên proxy của mình chưa. Chạy máy chủ SSL giả ở chế độ http bình thường có khả năng yêu cầu khoảng 50k mỗi giây. Khi tôi bật SSL trên máy chủ giả sẽ giảm xuống 28 nghìn yêu cầu mỗi giây.

Có điều gì tôi đang làm sai không? Có cái gì tôi đang mất tích?

Tôi đang sử dụng JDK 6 để biên dịch mã, chạy trên JDK 7u4. Tôi đang sử dụng Netty-3.5.0. Tôi đang sử dụng zeusbench để chạy thử nghiệm. Các thông số kiểm tra bao gồm: zeusbench -n 10000 -c 100 -k C RC4_SHA "https: ///"

Nguồn: http://pastebin.com/iahqr3zT

Sửa 1: tôi đã chạy máy chủ giả qua JProfiler. Cuộc gọi SSLContext.createSSLEngine trong nhà máy đường ống mất (trung bình) 55.005 micro giây (trung bình đã được tính từ 540 lần gọi phương thức).

Cuộc gọi SslHandler.handshake trong kênhKết nối mất (trung bình) 46,284 micro giây (trung bình đã được tính từ 540 lần gọi phương thức).

Tôi hiểu không có nhiều Netty có thể thực hiện cuộc gọi để tạo raSSLEngine, nhưng SslHandler.handshake có thể được điều chỉnh tốt hơn không? Việc của nó gần như miễn là thế hệ của động cơ chính nó.

+0

Bạn có khả năng chấm dứt SSL trước khi yêu cầu đến máy chủ của bạn không? Lý tưởng nhất là bạn có thể sử dụng phần cứng chuyên dụng để chấm dứt SSL. Amazons Elastic Load Balancer cũng có thể làm điều này. Độ dài của khóa SSL là bao nhiêu? Độ dài của khóa có tác động đến hiệu suất http://www.javamex.com/tutorials/cryptography/rsa_key_length.shtml –

+0

@JohnP Cảm ơn bạn đã trả lời. Chấm dứt SSL trước khi đến máy chủ của tôi không phải là một khả năng. Cảm ơn bạn đã biết mẹo về độ dài của khóa SSL, 2048 – blucas

Trả lời

-1

Mã hóa/giải mã w/java thực sự chậm.
Bạn không nên sử dụng triển khai SSL w/java để thực hiện.
Có một số cách để tránh java cho kết nối SSL: máy chủ proxy

  1. Cấu hình cung cấp kết nối SSL trước mặt của máy chủ java bạn
  2. Thực hiện ssl bắt tay thư viện w/openssl sử dụng thư viện trong mã Netty bởi JNI
+2

của nó thực sự chậm so với những gì? Có hàng triệu trang web đang chạy, ví dụ: Tomcat với SSL là các ví dụ ngược với các xác nhận này. Tôi đã chạy một mình trong vài năm. – EJP

+0

Đây là một nguồn cho nhận xét "java chậm" trong câu trả lời này: http://netty.io/wiki/requirements-for-4.x.html#benefits-of-using-openssl – cdeszaq

0

Bạn có thể thử sử dụng lại các phiên ssl cho các kết nối hiện có, điều này làm giảm bắt tay ssl và sẽ giúp bạn tăng cường chung.

+0

Điều này đã xảy ra theo mặc định. Bạn phải đi ra khỏi con đường của bạn để ngăn chặn nó. – EJP

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