Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 9693|Απάντηση: 1

[Πηγή] Πισίνα σύνδεσης βάσης δεδομένων Spring Boot Βελτιστοποίηση HikariPool

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 2021-11-25 14:55:15 | | | |
Η έκδοση Spring-Boot-2.0.0-M1 αλλάζει τον προεπιλεγμένο χώρο συγκέντρωσης σύνδεσης βάσης δεδομένων από tomcat jdbc pool σε hikari και κατά την εκτέλεση της εφαρμογής εκκίνησης ελατηρίου, η κονσόλα εξάγει τα εξής
2021-11-25 14:48:09.429 ΠΛΗΡΟΦΟΡΙΕΣ 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Έναρξη...
2021-11-25 14:48:09.813 ΠΛΗΡΟΦΟΡΙΕΣ 22236 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Η έναρξη ολοκληρώθηκε.

Οι προεπιλεγμένες τιμές για την προεπιλεγμένη διαμόρφωση του Hikari είναι οι εξής:
{"χρονικό όριο σύνδεσης":30000,"μέγιστο-μέγεθος-πισίνας":10,"μέγιστη διάρκεια ζωής":1800000,"ελάχιστο-αδρανές":10,"χρονικό όριο επικύρωσης":5000,"χρονικό όριο αδράνειας":600000}

ΌνομαΠροεπιλογές κατασκευαστήΗ προεπιλεγμένη διαμόρφωση είναι η τιμή μετά την επικύρωσηvalidateεπαναφορά
minIdle-110minIdle<0 ή minIdle>maxPoolSize, επαναφέρεται στο maxPoolSize
maxPoolSize-110Εάν το maxPoolSize είναι μικρότερο από 1, γίνεται επαναφορά. Όταν το minIdle<=0 επαναφέρεται στο DEFAULT_POOL_SIZE, είναι 10. Εάν το minIdle>0, επανέρχεται στην τιμή του minIdle
maxΔιάρκεια ζωήςMINUTES.toMillis(30) = 18000001800000Εάν δεν είναι ίσο με 0 και λιγότερο από 30 δευτερόλεπτα, θα επανέλθει στα 30 λεπτά
σύνδεσηΧρονικό όριοSECONDS.toMillis(30) = 3000030000Εάν είναι μικρότερο από 250 ms, επαναφέρεται στα 30 δευτερόλεπτα
validationTimeoutSECONDS.toMillis(5) = 50005000Εάν είναι μικρότερο από 250 ms, επαναφέρεται στα 5 δευτερόλεπτα
loginTimeout1030Math.max(1, (int) MILLISECONDS.toSeconds(500L + connectionTimeout)), που είναι το μέγιστο χρονικό όριο σύνδεσης+500ms για να μετατρέψετε τον αριθμό των δευτερολέπτων σε σύνολο και 1
idleTimeoutMINUTES.toMillis(10) = 600000600000Εάν το idleTimeout+1 δευτερόλεπτο > maxLifetime και maxLifetime >0, θα επανέλθει στο 0. Εάν idleTimeout!=0 και λιγότερο από 10 δευτερόλεπτα, επαναφέρεται στα 10 δευτερόλεπτα
διαρροήDetectionThreshold00Εάν είναι μεγαλύτερο από 0 και δεν είναι δοκιμή μονάδας, κρίνεται περαιτέρω ότι το (leakDetectionThreshold < SECONDS.toMillis(2) ή το (leakDetectionThreshold > maxLifetime &&&maxLifetime > 0), θα επαναφερθεί στο 0. Δηλαδή, για να τεθεί σε ισχύ, πρέπει να είναι >0 και δεν μπορεί να είναι μικρότερο από 2 δευτερόλεπτα και όταν το maxLifetime > 0 ώρες δεν μπορούν να είναι μεγαλύτερες από τη μέγιστη διάρκεια ζωής
αρχικοποίησηFailTimeout11-
isAutoCommittruetrue-
είναιΜόνο για ανάγνωσηfalseΦάσλε-
isAllowPoolSuspensionfalsefalse-
isIsolateInternalQueriesfalsefalse-
isRegisterMbeansfalsefalse-
ΣφραγισμένοfalsetrueΑυτή η σημαία ισχύει μετά την έναρξη της εκτέλεσης, υποδεικνύοντας ότι η τροποποίηση δεν εκτελείται πλέον
poolNameάκυροςHikariΠισίνα-1-
κατάλογοςάκυροςάκυρος-
σύνδεσηInitSqlάκυροςάκυρος-
connectionTestQueryάκυροςάκυρος-
dataSourceClassNameάκυροςάκυρος-
Σχήματοςάκυροςάκυρος-
transactionIsolationNameάκυροςάκυρος-
πηγή δεδομένωνάκυροςάκυρος-
dataSourceProperties{}{}-
threadFactoryάκυροςάκυρος-
προγραμματισμένοςΕκτελεστήςάκυροςάκυρος-
metricsTrackerFactoryάκυροςάκυρος-
μετρικόΜητρώοάκυροςάκυρος-
healthCheckRegistryάκυροςάκυρος-
healthCheckProperties{}{}-

Κατά την εκτέλεση ενός stress test, η εφαρμογή ενδέχεται να αναφέρει τα ακόλουθα σφάλματα:

Προκαλείται από: org.springframework.jdbc.CannotGetJdbcConnectionException: Απέτυχε η λήψη της σύνδεσης JDBC. ένθετη εξαίρεση είναι java.sql.SQLTransientConnectionException: HikariPool-1 - Η σύνδεση δεν είναι διαθέσιμη, το χρονικό όριο της αίτησης έληξε μετά από 30000ms.
        στο org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:82)
        στο org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80)
        στο org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67)
        στο org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337)
        στο org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86)
        στο org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)
        στο org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)
        στο org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
        στο org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
        στο com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81)
        στο org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
        στο com.sun.proxy.$Proxy 224.query(Άγνωστη πηγή)
        στο org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
        ... 114 περισσότερα
Προκαλείται από: java.sql.SQLTransientConnectionException: HikariPool-1 - Η σύνδεση δεν είναι διαθέσιμη, το χρονικό όριο του αιτήματος λήγει μετά από 30000ms.
        στο com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695)
        στο com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197)
        στο com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162)
        στο com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
        στο org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158)
        στο org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116)
        στο org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
        ... 126 περισσότερα


Λάθος:Αποτυχία λήψης σύνδεσης JDBC. ένθετη εξαίρεση είναι java.sql.SQLTransientConnectionException: HikariPool-1 - Η σύνδεση δεν είναι διαθέσιμη, το χρονικό όριο του αιτήματος έληξε μετά από 30000ms.

Ο ελεγκτής εξάγει τον κώδικα διασύνδεσης διαμόρφωσης HikariDataSource ως εξής:

Βελτιστοποιήστε το σχήμα, αυξήστε τον μέγιστο αριθμό νημάτων και αυξήστε τον αριθμό των συνδέσεων που παραμένουν σε αδράνεια και τροποποιήστε τη διαμόρφωση του application.yml ως εξής:

(Τέλος)




Προηγούμενος:Η διαφορά μεταξύ getLastRowNum() και getLastCellNum() στα POI
Επόμενος:Σύγκριση των εργαλείων δοκιμών LoadRunner και Jmeter
Δημοσιεύτηκε στις 2022-12-14 21:46:53 |
Μαθαίνω να μαθαίνω
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com