2012-06-05 19 views
5

कैसे बढ़ा सकता हूं मैंने अपने प्रॉक्सी सर्वर पर एसएसएल सक्षम किया है और पाया है कि प्रति सेकंड लगभग 17k अनुरोध प्रति सेकंड 5k अनुरोध से प्रदर्शन घट गया है। मैंने नेटटी के सुरक्षित चैट उदाहरण में कोड का पालन किया और मुझे नहीं लगता कि मैंने कुछ भी अलग किया है।मैं सर्वर एसएसएल प्रदर्शन

मैंने यह देखने के लिए एक डमी सर्वर लिखा है कि मैंने अपनी प्रॉक्सी पर कुछ गलतियां की हैं या नहीं। सामान्य http मोड में डमी एसएसएल सर्वर चलाना प्रति सेकंड लगभग 50k अनुरोध करने में सक्षम है। जब मैं डमी सर्वर पर SSL सक्षम करता हूं जो प्रति सेकेंड 28k अनुरोधों पर जाता है।

क्या कुछ भी गलत है? क्या मुझे कुछ याद आ रही है?

मैं कोड को संकलित करने के लिए जेडीके 6 का उपयोग कर रहा हूं, जेडीके 7u4 पर चल रहा हूं। मैं नेटी-3.5.0 का भी उपयोग कर रहा हूं। मैं परीक्षण चलाने के लिए zeusbench का उपयोग कर रहा हूँ। परीक्षण मानकों हैं: zeusbench -n 10000 -c 100 -k -सी RC4_SHA "https: ///"

स्रोत: http://pastebin.com/iahqr3zT

संपादित करें 1: मैं JProfiler के माध्यम से डमी सर्वर चलाते है। पाइपलाइन फैक्ट्री में SSLContext.createSSLEngine कॉल (औसतन) 55,005 माइक्रोसॉन्ड (उस औसत की विधि के 540 आमंत्रणों से गणना की गई है) लेता है।

चैनल में एसएसएचएचंडलर हैंडशेक कॉल कनेक्ट किया गया (औसतन) 46,284 माइक्रोसॉन्ड (उस औसत की विधि के 540 आमंत्रणों से गणना की गई है)।

मुझे समझ में आता है कि नेटस्लेगिन बनाने के लिए कॉल के बारे में नेटटी बहुत कुछ नहीं कर सकता है, लेकिन क्या एसएसएचएचंडलर .डैंडशेक को बेहतर तरीके से ट्यून किया जा सकता है? यह लगभग इंजन की पीढ़ी के रूप में लगभग ले रहा है।

+0

क्या आपके पास सर्वर से अनुरोध पहुंचने से पहले एसएसएल को समाप्त करने की संभावना है? आदर्श रूप से आप एसएसएल को समाप्त करने के लिए समर्पित हार्डवेयर का उपयोग कर सकते हैं। अमेज़ॅन लोचदार लोड बैलेंसर भी ऐसा कर सकता है। एसएसएल कुंजी की लंबाई क्या है? कुंजी की लंबाई प्रदर्शन पर प्रभाव डालती है http://www.javamex.com/tutorials/cryptography/rsa_key_length.shtml –

+0

@JohnP उत्तर के लिए धन्यवाद। मेरे सर्वर तक पहुंचने से पहले एसएसएल को समाप्त करना एक संभावना नहीं है। एसएसएल कुंजी की लंबाई पर टिप के लिए धन्यवाद, इसकी 2048 – blucas

उत्तर

-1

एन्क्रिप्शन/डिक्रिप्शन डब्ल्यू/जावा वास्तव में धीमा है।
आपको प्रदर्शन के लिए SSL कार्यान्वयन w/java का उपयोग नहीं करना चाहिए।

  1. विन्यस्त प्रॉक्सी सर्वर जो आपके जावा सर्वर के सामने
  2. ssl लागू पुस्तकालय handshaking डब्ल्यू/openssl JNI द्वारा netty कोड में पुस्तकालय का उपयोग SSL कनेक्शन प्रदान करते हैं:
    वहाँ SSL कनेक्शन के लिए जावा से बचने के लिए कई तरीके हैं
+2

वास्तव में क्या धीमी है? लाखों वेबसाइटें चल रही हैं उदा। एसएसएल के साथ टोमकैट जो इन दावों के प्रति उदाहरण हैं। मैं कई वर्षों से खुद को चला रहा हूं। – EJP

+0

इस उत्तर में "जावा धीमा" टिप्पणी के लिए यहां एक स्रोत है: http://netty.io/wiki/requirements-for-4.x.html#benefits-of-using-openssl – cdeszaq

0

आप मौजूदा कनेक्शन के लिए एसएसएल सत्रों का पुनः उपयोग करने का प्रयास कर सकते हैं, इससे एसएसएल हैंडशेक कम हो जाता है और आपको सामान्य बढ़ावा देना चाहिए।

+0

यह पहले से ही डिफ़ॉल्ट रूप से होता है। इसे रोकने के लिए आपको अपने रास्ते से बाहर जाना होगा। – EJP

संबंधित मुद्दे