मैं अपने ऐप को विकसित करने के लिए Play Framework 2.1 का उपयोग कर रहा हूं। यह उपयोग में आसान ढांचे है। मैं अपने ऐप को जल्दी से विकसित करने में सक्षम हूं। लेकिन मैं कुछ स्केलेबिलिटी मुद्दों में भी भाग गया। ऐसा लगता है कि प्ले 2.1 दावा के रूप में तेजी से नहीं चलता है। शायद ऐसा इसलिए है क्योंकि मुझे प्रदर्शन को ट्यून करने के बारे में पता नहीं था।प्ले फ्रेमवर्क ऐप की स्केलेबिलिटी को कैसे ट्यून करें?
मेरी समस्या निम्न है: मेरे पास एक ईमेल है जो उपयोगकर्ता को अपने ईमेल के साथ लॉगिन करने के लिए है।
मैंने प्रदर्शन का उपयोग करने के लिए अपाचे बेंचमार्क (एबी) का उपयोग किया। एक एकल अनुरोध के बारे में 230ms लगता है। जब 5 समवर्ती अनुरोध होते हैं, तो प्रतिक्रिया समय अभी भी लगभग 280 मिमी तक पर्याप्त तेज़ है।
Concurrency Level: 5
Time taken for tests: 0.306 seconds
Complete requests: 5
Failed requests: 0
Write errors: 0
Total transferred: 3495 bytes
Total POSTed: 1065
HTML transferred: 3135 bytes
Requests per second: 16.34 [#/sec] (mean)
Time per request: 306.009 [ms] (mean)
Time per request: 61.202 [ms] (mean, across all concurrent requests)
Transfer rate: 11.15 [Kbytes/sec] received
3.40 kb/s sent
14.55 kb/s total
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 1 0.1 1 1
Processing: 280 290 13.8 292 305
Waiting: 278 288 13.7 291 304
Total: 280 291 13.9 293 306
हालांकि, जब मैंने 100 समवर्ती अनुरोधों का उपयोग किया, तो मुझे बहुत बुरे परिणाम मिले।
Concurrency Level: 100
Time taken for tests: 4.243 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 69900 bytes
Total POSTed: 21300
HTML transferred: 62700 bytes
Requests per second: 23.57 [#/sec] (mean)
Time per request: 4243.058 [ms] (mean)
Time per request: 42.431 [ms] (mean, across all concurrent requests)
Transfer rate: 16.09 [Kbytes/sec] received
4.90 kb/s sent
20.99 kb/s total
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 62 31.5 83 89
Processing: 996 3744 544.7 3902 4146
Waiting: 995 3727 542.0 3894 4146
Total: 1084 3806 542.6 3968 4204
मेरा सर्वर मशीन: इंटेल i7, 8 कोर, 2.8GHz, 8GB मेमोरी। मैंने प्ले फ्रेमवर्क की डिफ़ॉल्ट सेटिंग का इस्तेमाल किया। कोई भी जानता है कि प्ले फ्रेमवर्क के प्रदर्शन को कैसे ट्यून करें?
मुझे लगता है कि यह थ्रेड पूल आकार से संबंधित है। दस्तावेज़ कहता है कि प्ले का डिफ़ॉल्ट थ्रेड पूल आकार # कोर है। उस स्थिति में, सभी 100 अनुरोधों को संभालने के लिए अपेक्षित समय है:
230ms * (100/8) = 2875ms
तो, क्या मुझे डिफ़ॉल्ट थ्रेड पूल का आकार बढ़ाना चाहिए? लेकिन दस्तावेज कहता है कि पूल आकार # कोर के बराबर होने पर मुझे सबसे अच्छा प्रदर्शन मिलना चाहिए।
इसके अलावा, नेटटी (प्ले का वेब सर्वर) थ्रेड पूल आकार प्रदर्शन को प्रभावित करेगा? मुझे इसके डिफ़ॉल्ट मान के बारे में कोई जानकारी नहीं मिली। कोई भी जानता है कि यह कैसे कॉन्फ़िगर किया गया है?
धन्यवाद!
ऐसा लगता है कि आपका प्रश्न प्रदर्शन की बजाय स्केलेबिलिटी को लक्षित कर रहा है। प्रदर्शन के संबंध में, आईएमएचओ 230 एमएमएस/रिक भी तेज़ नहीं है, इसलिए मैं यह भी जांचूंगा कि इसके लिए क्या कारण है। क्या आपके पास कोई समय है जो अधिकतर समय ले रहा है, उदा। बैकएंड कॉल, ऐप विशिष्ट गणना या टेम्पलेट प्रतिपादन? – MartinGrotzke
सुनिश्चित करें कि आप 'play start' चलाकर PROD मोड में Play के विरुद्ध बेंचमार्किंग कर रहे हैं। ऑटो मोड में ऑटो-रीलोड के लिए ओवरहेड का एक टन है। –