इस आलेख के पहले भाग में, हमने सीखा कि टॉमकैट को अंडरटो से प्रतिस्थापित करके अपने एप्लिकेशन के प्रदर्शन को कैसे बेहतर बनाया जाए, जो है एक उच्च-प्रदर्शन वेब सर्वर, नेटवर्क पर यात्रा करने वाले HTTP प्रतिक्रियाओं के आकार को कम करने के लिए डेटा संपीड़न को सक्षम और कॉन्फ़िगर करने के अलावा।
अब, हम दृढ़ता भाग में स्प्रिंग बूट एप्लिकेशन के प्रदर्शन को बेहतर बनाने के बारे में बात करेंगे, लेकिन पहले हमें यह समझने की जरूरत है कि JPA, हाइबरनेट और हिकारी.
जेपीए या जावा पर्सिस्टेंस एपीआई, जिसे बाद में बदलकर जकार्ता पर्सिस्टेंस कर दिया गया, एक जावा भाषा मानक है जो एक सामान्य का वर्णन करता है डेटा दृढ़ता ढाँचे के लिए इंटरफ़ेस
जेपीए विनिर्देश विक्रेता-विशिष्ट मैपिंग कार्यान्वयन पर निर्भर होने के बजाय आंतरिक रूप से ऑब्जेक्ट रिलेशनल मैपिंग को परिभाषित करता है।
हाइबरनेटहाइबरनेट ORM ढांचे में से एक है जो JPA विनिर्देश का ठोस कार्यान्वयन करता है। अर्थात्, यदि इस विनिर्देश में यह वर्णित है कि जारी रखने, हटाने, अद्यतन और डेटा प्राप्त करने के लिए तरीकों की आवश्यकता है, तो कौन करेगा वास्तव में इन व्यवहारों का निर्माण हाइबरनेट, साथ ही EclipseLink है, जो एक और ORM है &&&]। हिकारी
हिकारी एक कनेक्शन पूलिंग ढांचा है, जो डेटाबेस से कनेक्शन प्रबंधित करने, उन्हें खुला रखने के लिए जिम्मेदार है ताकि उनका पुन: उपयोग किया जा सके, अर्थात, यह भविष्य के अनुरोधों के लिए कनेक्शनों का एक कैश है, जो डेटाबेस तक पहुंच को तेज़ बनाता है और बनाए जाने वाले नए कनेक्शनों की संख्या को कम करता है। हिकारी, जेपीए और हाइबरनेट को कॉन्फ़िगर करना
application.yml का उपयोग करना:
वसंत:
शिकारी:
स्वतः-प्रतिबद्ध: गलत
कनेक्शन-टाइमआउट: 250
अधिकतम जीवनकाल: 600000
अधिकतम-पूल-आकार: 20
न्यूनतम-निष्क्रिय: 10
पूल-नाम: मास्टर
जेपीए:
ओपन-इन-व्यू: गलत
शो-एसक्यूएल: सत्य
शीतनिद्रा में होना:
डीडीएल-ऑटो: कोई नहीं
गुण:
hibernet.connection.provider_disables_autocommit: सत्य
hibernet.generate_statistics: सत्य
spring: hikari: auto-commit: false connection-timeout: 250 max-lifetime: 600000 maximum-pool-size: 20 minimum-idle: 10 pool-name: master jpa: open-in-view: false show-sql: true hibernate: ddl-auto: none properties: hibernate.connection.provider_disables_autocommit: true hibernate.generate_statistics: true
स्प्रिंग.डेटासोर्स.हिकारी.ऑटो-कमिट=झूठा
स्प्रिंग.डेटास्रोत.हिकारी.कनेक्शन-टाइमआउट=50
स्प्रिंग.डेटासोर्स.हिकारी.मैक्स-लाइफटाइम=600000
स्प्रिंग.डेटास्रोत.हिकारी.अधिकतम-पूल-आकार=20
स्प्रिंग.डेटास्रोत.हिकारी.न्यूनतम-निष्क्रिय=10
स्प्रिंग.डेटासोर्स.हिकारी.पूल-नाम=मास्टर
स्प्रिंग.डेटास्रोत.jpa.open-in-view=झूठा
स्प्रिंग.डेटास्रोत.jpa.show-sql=सत्य
स्प्रिंग.डेटासोर्स.जेपीए.हाइबरनेट.डीडीएल-ऑटो=कोई नहीं
स्प्रिंग.जेपीए.प्रॉपर्टीज.हाइबरनेट.जेनरेट_स्टैटिस्टिक्स=सत्य
स्प्रिंग.जेपीए.प्रॉपर्टीज.हाइबरनेट.कनेक्शन.प्रोवाइडर_डिसेबल्स_ऑटोकॉमिट=सत्य
spring.datasource.hikari.auto-commit=false spring.datasource.hikari.connection-timeout=50 spring.datasource.hikari.max-lifetime=600000 spring.datasource.hikari.maximum-pool-size=20 spring.datasource.hikari.minimum-idle=10 spring.datasource.hikari.pool-name=master spring.datasource.jpa.open-in-view=false spring.datasource.jpa.show-sql=true spring.datasource.jpa.hibernate.ddl-auto=none spring.jpa.properties.hibernate.generate_statistics=true spring.jpa.properties.hibernate.connection.provider_disables_autocommit=true
हिकारी
द्वारा लौटाया गया प्रत्येक कनेक्शन auto-commit अक्षम हो जाएगा।
से कनेक्शन के लिए प्रतीक्षा करेगा। क्लाइंट को अनिश्चित काल तक प्रतीक्षा कराने के बजाय, जल्दी विफल होने और त्रुटि संदेश लौटाने के लिए एक छोटा टाइमआउट सेट करना बेहतर है।
का अधिकतम आकार, जिसमें निष्क्रिय और उपयोग में आने वाले कनेक्शन शामिल हैं, जो डेटाबेस में सक्रिय कनेक्शन की अधिकतम संख्या निर्धारित करता है। यदि पूल इस सीमा तक पहुँच जाता है और कोई निष्क्रिय कनेक्शन नहीं है, तो getConnection() पर कॉल विफल होने से पहले connectionTimeout मिलीसेकेंड तक ब्लॉक हो जाएगी।
एक उपयुक्त मान ढूंढना महत्वपूर्ण है, क्योंकि बहुत से लोग सोचते हैं कि इसे 50, 70 या यहां तक कि 100 पर सेट करने से उन्हें शानदार प्रदर्शन मिलेगा। आदर्श यह है कि अधिकतम 20 हो, जो कि
और की पहचान करने के लिए मुख्य रूप से रजिस्ट्री प्रबंधन कंसोल और JMX में दिखाई देता है। पूल और उनके विन्यास।
(ओपन सेशन इन व्यू) सक्षम होता है, तो पूरे अनुरोध के दौरान भी एक सत्र बनाए रखा जाता है। @Transactional एनोटेशन के बिना। इससे प्रदर्शन संबंधी समस्याएं हो सकती हैं, जैसे एप्लिकेशन प्रतिक्रियाओं की कमी, क्योंकि सत्र अनुरोध के अंत तक डेटाबेस से कनेक्शन बनाए रखता है।
के संबंध में हाइबरनेट के व्यवहार को कॉन्फ़िगर करता है। इसके निम्नलिखित मान हो सकते हैं:
कोई नहीं: कुछ नहीं करता. हम बैंक की स्कीमा को मैन्युअल रूप से प्रबंधित करते हैं।
हाइबरनेट कि हमने प्रदाताओं में से ऑटो-कमिट को अक्षम कर दिया है (PostgreSQL, MySQL, आदि)। यह प्रदर्शन को प्रभावित करता है क्योंकि हाइबरनेट को यह जानने के लिए पूल से कनेक्शन प्राप्त करने की आवश्यकता होगी कि क्या ऑटो-कमिट सक्षम है या नहीं , उसके द्वारा किए गए प्रत्येक लेन-देन के लिए।
हिकारी सेटिंग्स जैसे ऑटो-कमिट और पूल आकार , JPA और हाइबरनेट जैसे OSIV (दृश्य में खुला सत्र) और आपको सूचित करते हैं कि हमने प्रदाताओं के ऑटो-कमिट को अक्षम कर दिया है। अगले भाग में हम अपवादों के बारे में बात करेंगे और
JVM(Java वर्चुअल मशीन) से संसाधनों को बचाने के लिए उन्हें कैसे कॉन्फ़िगर किया जा सकता है। संदर्भ:
https://en.wikipedia.org/wiki/Jakarta_Persistence
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3