2017-01-02 12 views
5

मेरे पास सरल एएसपी.NET एप्लिकेशन है जो ImageResizer के साथ छवियों का आकार बदलता है और कुछ और नहीं करता है। परीक्षण उद्देश्यों के लिए मैंने डिस्क कैशिंग अक्षम कर दी है, इसलिए प्रत्येक अनुरोध पर छवियों का आकार बदल दिया जाता है।आईआईएस 8.5 एकल कार्यकर्ता प्रक्रिया बनाम वेब गार्डन प्रदर्शन

जब मैं JMeter साथ एप्लिकेशन के प्रदर्शन का परीक्षण मैं निम्नलिखित औसत प्रतिक्रिया समय मिलता है:

  • एकल वर्कर प्रोसेस, 1 समवर्ती ग्राहकों: ~ 200 मि.से
  • एकल वर्कर प्रोसेस, 10 समवर्ती ग्राहकों: ~ 1200ms
  • 4 कार्यकर्ता प्रक्रियाओं, 10 समवर्ती ग्राहकों: ~ 300 मि.से

आप देख सकते हैं, जब मैं एक कार्यकर्ता की प्रक्रिया और 10 समवर्ती ग्राहकों चलाने के लिए, प्रतिक्रिया समय डॉ बढ़ जाती है व्यावहारिक रूप से उपलब्ध हार्डवेयर संसाधनों के बावजूद: प्रदर्शन परीक्षण के दौरान सीपीयू उपयोग ~ 30% है, स्मृति उपयोग ~ 150 एमबी है।

जैसा कि बताया जा here,

वेब उद्यान एक ही कारण के लिए डिजाइन किया गया था - अनुप्रयोगों की पेशकश है कि सीपीयू बाध्य क्षमता पैमाने पर और सभी धागे में उपलब्ध का उपयोग नहीं करने के लिए नहीं हैं, लेकिन लंबे समय से चल रहा है पर अमल अनुरोध कार्यकर्ता की प्रक्रिया।

यह मेरे मामले की तरह नहीं दिख रहा है।

तो, मुझे समझ में नहीं आता कि मुझे ऐसा परिणाम क्यों मिलता है। मुझे उम्मीद है कि यहां तक ​​कि एकल कार्यकर्ता प्रक्रिया भी स्वीकार्य प्रतिक्रिया समय प्रदान करेगी जब तक कि यह संसाधन सीमा तक पहुंच न जाए। और 10 समवर्ती ग्राहक निश्चित रूप से भारी भार नहीं हैं। क्या कोई मुझे समझा सकता है, मैं गलत कहां हूं?

मेरे विन्यास:

  • विंडोज सर्वर 2012 R2
  • IIS सभी डिफ़ॉल्ट सेटिंग (MaxWorkerThreads को छोड़कर)
  • क्वाड-कोर i3 3.4GHz सीपीयू
  • 16 जीबी रैम
साथ 8.5

मेरा आवेदन केवल छवि रेसिसर के साथ एएसपी.नेट एमवीसी एप्लीकेशन खाली है, this instruction में जोड़ा गया (विकल्प 3 - मैनुअल I nstallation) और DiskCache प्लगइन के साथ Web.config

+1

बस उन संख्याओं को आपके द्वारा दी गई है, और ImageResizer बारे में कुछ भी जानने के बिना के आधार पर, ऐसा लगता है ImageResizer की तरह एक भी thr में आपरेशन का आकार बदलने के चल रहा है ईद, शायद एसटीए? यह (अटकलें) मामला हो सकता है अगर यह एक COM घटक पर आधारित था जो एकाधिक धागे का समर्थन नहीं करता था। – Ben

उत्तर

3

में मुझे अक्षम किया गया है मुझे @ बेन की टिप्पणी के लिए उत्तर मिला।

समस्या यह है कि ImageResizer GDI + पर आधारित है (जैसा कि it's site पर बताया गया है), जिसमें ताले शामिल हैं (this और this विवरण के लिए पोस्ट देखें)। यही कारण है कि यह एकल प्रक्रिया में धीरे-धीरे काम करता है।

समस्या का कारण खोजने के बाद मैंने this solution को आजमाया। एएसपी.नेट आवेदन से डब्ल्यूपीएफ असेंबली का संदर्भ देना शायद, सबसे अच्छा विचार नहीं है, लेकिन परीक्षण उद्देश्यों के लिए यह ठीक है।120ms ~:

अब मैं निम्नलिखित परिणाम प्राप्त जब मैं प्रश्न में के रूप में ही प्रदर्शन परीक्षण:

  • एकल वर्कर प्रोसेस, 1 समवर्ती ग्राहक: ~ 90ms
  • एकल वर्कर प्रोसेस, 10 समवर्ती ग्राहकों
  • एकल वर्कर प्रोसेस, 40 समवर्ती ग्राहकों: ~ 190ms
  • एकल वर्कर प्रोसेस, 60 समवर्ती ग्राहकों: ~ 400 मि.से
  • एकल वर्कर प्रोसेस, 80 समवर्ती ग्राहकों: ~ 630ms

जैसा कि आप देख सकते हैं, अब एप्लिकेशन बहुत तेज़ी से काम करता है। इसके अलावा यह लगभग सभी उपलब्ध CPU संसाधनों का उपयोग उच्च भार के तहत करता है, जैसा कि मैंने शुरुआत में अपेक्षित था।

तो, आप अपने ASP.NET अनुप्रयोग में चित्रों को प्रोसेस करता है, तो:

  • , GDI + आधारित समाधान का उपयोग नहीं करते हैं तो आप
  • आप उपयोग करना GDI + है, applicaion में MaxWorkerProcesses बढ़ा सकते हैं पूल की सेटिंग्स
संबंधित मुद्दे