{"id":13485685,"url":"https://github.com/vladmihalcea/flexy-pool","last_synced_at":"2025-05-14T09:13:20.087Z","repository":{"id":13986821,"uuid":"16687794","full_name":"vladmihalcea/flexy-pool","owner":"vladmihalcea","description":"FlexyPool adds metrics and failover strategies to a given Connection Pool, allowing it to resize on demand.","archived":false,"fork":false,"pushed_at":"2025-03-04T13:53:49.000Z","size":950,"stargazers_count":1121,"open_issues_count":7,"forks_count":120,"subscribers_count":68,"default_branch":"master","last_synced_at":"2025-04-11T04:11:45.025Z","etag":null,"topics":["connection-pool","database","dbcp","flexy-pool","hikaricp","histogram","java","monitoring"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vladmihalcea.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-02-10T07:31:08.000Z","updated_at":"2025-04-09T23:06:43.000Z","dependencies_parsed_at":"2023-12-16T16:04:25.108Z","dependency_job_id":"7af6a356-c940-450f-ac74-c521155e7230","html_url":"https://github.com/vladmihalcea/flexy-pool","commit_stats":{"total_commits":339,"total_committers":11,"mean_commits":"30.818181818181817","dds":"0.32448377581120946","last_synced_commit":"3f8e2a7a4876aab785baa15831b7dc162765f365"},"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vladmihalcea%2Fflexy-pool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vladmihalcea%2Fflexy-pool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vladmihalcea%2Fflexy-pool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vladmihalcea%2Fflexy-pool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vladmihalcea","download_url":"https://codeload.github.com/vladmihalcea/flexy-pool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254110377,"owners_count":22016391,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["connection-pool","database","dbcp","flexy-pool","hikaricp","histogram","java","monitoring"],"created_at":"2024-07-31T18:00:29.725Z","updated_at":"2025-05-14T09:13:20.065Z","avatar_url":"https://github.com/vladmihalcea.png","language":"Java","funding_links":[],"categories":["项目","Projects","数据库开发","II. Databases, search engines, big data and machine learning","database","Database"],"sub_categories":["数据库","Database","4. Client and drivers for databases"],"readme":"\u003ca href=\"https://vladmihalcea.com/tutorials/flexypool/\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/wiki/vladmihalcea/flexy-pool/image/FlexyPoolLogo.jpg\" alt=\"Flexy Pool Logo\" height=\"196\"\u003e\n\u003c/a\u003e\n\n[![License](https://img.shields.io/github/license/vladmihalcea/flexy-pool.svg)](https://raw.githubusercontent.com/vladmihalcea/flexy-pool/master/LICENSE)\n[![Maven Central](https://img.shields.io/maven-central/v/com.vladmihalcea.flexy-pool/flexy-pool-parent.svg)](https://maven-badges.herokuapp.com/maven-central/com.vladmihalcea.flexy-pool/flexy-pool-parent)\n[![JavaDoc](http://javadoc.io/badge/com.vladmihalcea.flexy-pool/flexy-pool-core.svg)](http://javadoc.io/doc/com.vladmihalcea.flexy-pool/flexy-pool-core)\n\n### Introduction\n\nThe FlexyPool library adds metrics and flexible strategies to a given Connection Pool, allowing it to resize on demand.\nThis is very handy since most connection pools offer a limited set of dynamic configuration strategies.\n\n\u003ca href=\"https://vladmihalcea.com/tutorials/flexypool/\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/wiki/vladmihalcea/flexy-pool/image/architecture/FlexyPoolArchitecture.png\" alt=\"Flexy Pool architecture\" \u003e\n\u003c/a\u003e\n\n### Features \n\n* multiple environment options\n * Stand-alone (Spring, Guice)\n * Java EE\n* extensive connection pool support\n * [Apache DBCP](http://commons.apache.org/proper/commons-dbcp/)\n * [Apache DBCP2](http://commons.apache.org/proper/commons-dbcp/)\n * [C3P0](http://www.mchange.com/projects/c3p0/)\n * [HikariCP](https://github.com/brettwooldridge/HikariCP)\n * [Tomcat CP](http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html)\n * [Vibur DBCP](http://www.vibur.org/)\n * [Druid](https://github.com/alibaba/druid/)\n * [Atomikos TransactionsEssentials](http://www.atomikos.com/Main/TransactionsEssentials)\n* statistics support\n * concurrent connections histogram\n * concurrent connection requests histogram\n * data source connection acquisition time histogram\n * connection lease time histogram\n * maximum pool size histogram\n * total connection acquisition time histogram\n * overgrow pool size histogram\n * retries attempts histogram\n \n### Are you struggling with application performance issues?\n\n\u003ca href=\"https://vladmihalcea.com/hypersistence-optimizer/?utm_source=GitHub\u0026utm_medium=banner\u0026utm_campaign=flexypool\"\u003e\n\u003cimg src=\"https://vladmihalcea.com/wp-content/uploads/2019/03/Hypersistence-Optimizer-300x250.jpg\" alt=\"Hypersistence Optimizer\"\u003e\n\u003c/a\u003e\n\nImagine having a tool that can automatically detect if you are using JPA and Hibernate properly. No more performance issues, no more having to spend countless hours trying to figure out why your application is barely crawling.\n\nImagine discovering early during the development cycle that you are using suboptimal mappings and entity relationships or that you are missing performance-related settings. \n\nMore, with Hypersistence Optimizer, you can detect all such issues during testing and make sure you don't deploy to production a change that will affect data access layer performance.\n\n[Hypersistence Optimizer](https://vladmihalcea.com/hypersistence-optimizer/?utm_source=GitHub\u0026utm_medium=banner\u0026utm_campaign=flexypool) is the tool you've been long waiting for!\n\n#### Training\n\nIf you are interested in on-site training, I can offer you my [High-Performance Java Persistence training](https://vladmihalcea.com/trainings/?utm_source=GitHub\u0026utm_medium=banner\u0026utm_campaign=flexypool)\nwhich can be adapted to one, two or three days of sessions. For more details, check out [my website](https://vladmihalcea.com/trainings/?utm_source=GitHub\u0026utm_medium=banner\u0026utm_campaign=flexypool).\n\n#### Consulting\n\nIf you want me to review your application and provide insight into how you can optimize it to run faster, \nthen check out my [consulting page](https://vladmihalcea.com/consulting/?utm_source=GitHub\u0026utm_medium=banner\u0026utm_campaign=flexypool).\n\n#### High-Performance Java Persistence Video Courses\n\nIf you want the fastest way to learn how to speed up a Java database application, then you should definitely enroll in [my High-Performance Java Persistence video courses](https://vladmihalcea.com/courses/?utm_source=GitHub\u0026utm_medium=banner\u0026utm_campaign=flexypool).\n\n#### High-Performance Java Persistence Book\n\nOr, if you prefer reading books, you are going to love my [High-Performance Java Persistence book](https://vladmihalcea.com/books/high-performance-java-persistence?utm_source=GitHub\u0026utm_medium=banner\u0026utm_campaign=flexypool) as well.\n\n\u003ca href=\"https://vladmihalcea.com/books/high-performance-java-persistence?utm_source=GitHub\u0026utm_medium=banner\u0026utm_campaign=flexypool\"\u003e\n\u003cimg src=\"https://i0.wp.com/vladmihalcea.com/wp-content/uploads/2018/01/HPJP_h200.jpg\" alt=\"High-Performance Java Persistence book\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://vladmihalcea.com/courses?utm_source=GitHub\u0026utm_medium=banner\u0026utm_campaign=flexypool\"\u003e\n\u003cimg src=\"https://i0.wp.com/vladmihalcea.com/wp-content/uploads/2018/01/HPJP_Video_Vertical_h200.jpg\" alt=\"High-Performance Java Persistence video course\"\u003e\n\u003c/a\u003e\n\n### Documentation \n\n1. [Installation Guide](https://github.com/vladmihalcea/flexy-pool/wiki/Installation-Guide)\n2. [User Guide](https://github.com/vladmihalcea/flexy-pool/wiki/User-Guide)\n3. [Developer Guide](https://github.com/vladmihalcea/flexy-pool/wiki/Developer-Guide)\n\n### In the Press\n\n1. [The anatomy of Connection Pooling](http://vladmihalcea.com/the-anatomy-of-connection-pooling)\n2. [FlexyPool, reactive connection pooling](http://vladmihalcea.com/flexy-pool-reactive-connection-pooling)\n3. [Connection pool sizing with Flexy Pool](http://vladmihalcea.com/connection-pool-sizing-with-flexy-pool)\n4. [The simple scalability equation](http://vladmihalcea.com/the-simple-scalability-equation)\n5. [How to monitor a Java EE DataSource](http://vladmihalcea.com/how-to-monitor-a-java-ee-datasource/)\n6. [How does FlexyPool support the Dropwizard Metrics package renaming](http://vladmihalcea.com/how-does-flexypool-support-the-dropwizard-metrics-package-renaming/)\n7. [How does FlexyPool support both Connection proxies and decorators](http://vladmihalcea.com/how-does-flexypool-support-both-connection-proxies-and-decorators/)\n8. [Applying Queueing Theory to Dynamic Connection Pool Sizing with FlexyPool](https://blog.jooq.org/2016/11/02/applying-queueing-theory-to-dynamic-connection-pool-sizing-with-flexypool/)\n9. [Java Performance Tuning - November 2016](http://javaperformancetuning.com/news/news192.shtml)\n10. [Brett Wooldridge Shows What it Takes to Write the Fastest Java Connection Pool](https://blog.jooq.org/2017/02/21/jooq-tuesdays-brett-wooldridge-shows-what-it-takes-to-write-the-fastest-java-connection-pool/)\n11. [FlexyPool 2 has been released](https://vladmihalcea.com/flexypool-2-released/)\n\n### Who uses FlexyPool\n\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"20%\"\u003e\n            \u003ca href=\"https://www.torodb.com/stampede/docs/1.0.0/metrics/\"\u003e\u003cimg src=\"https://pbs.twimg.com/profile_images/704672668889587712/1wW0TKXR_400x400.jpg\" width=\"150\"/\u003e\u003c/a\u003e\n        \u003c/td\u003e\n        \u003ctd width=\"80%\"\u003e\n            \u003cp\u003eToroDB Stampede is a replication and mapping technology allowing you to mirror a MongoDB database in a SQL database.\u003c/p\u003e\n            \u003cblockquote cite=\"https://www.torodb.com/stampede/docs/1.0.0/metrics/\"\u003e\n            ToroDB Stampede exposes multiple metrics using JMX, some of them are custom metrics and other are metrics offered by third party products like Flexy-pool.\n            \u003c/blockquote\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"20%\"\u003e\n            \u003ca href=\"http://www.etuovi.com/\"\u003e\u003cimg src=\"https://www.almamedia.fi/images/default-source/product-and-case-images/etuovi.com/etuovi_370x370_784788b851ca6195b8b0ff00009ee3c0.png\" width=\"150\"/\u003e\u003c/a\u003e\n        \u003c/td\u003e\n        \u003ctd width=\"80%\"\u003e\n            \u003cp\u003eEtuovi is the leading real estate portal in Finland.\u003c/p\u003e\n            \u003cblockquote\u003e\n            New Etuovi.com has used FlexyPool in production since early 2014. \n            \u003cbr\u003e\n            The library has proven to be reliable and allows our infrastructure to handle temporary spikes much better. \n            We use it everywhere in our stack, ranging from our frontends to the backend services.\n            \u003cbr\u003e\n            -- \u003ccite\u003eAntti Koivisto, Software Architect, Etuovi.com\u003c/cite\u003e\n            \u003c/blockquote\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"20%\"\u003e\n            \u003ca href=\"https://www.scentbird.com/\"\u003e\u003cimg src=\"https://cdn.scentbird.com/github-logo-no-shadow.svg\" width=\"150\"/\u003e\u003c/a\u003e\n        \u003c/td\u003e\n        \u003ctd width=\"80%\"\u003e\n        \u003cp\u003eScentbird is a website that allows its subscribers to try hundreds of designer fragrances at very affordable prices.\u003c/p\u003e\n        \u003cblockquote\u003e\n         We have tried FlexyPool in Scentbird, after one week of intensive testing we decided switch it to FlexyPool and HikariCP in production mode, and everything works very robust and fast, we so happy about that!\n         \u003cbr\u003e\n         Thank you for this library.\n         \u003cbr\u003e\n         -- \u003ccite\u003eAndrey Rebrov, CTO, Scentbird\u003c/cite\u003e\n        \u003c/blockquote\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n### Requirements\n\n* Java 17 or above\n* [Dropwizard Metrics](https://metrics.dropwizard.io/4.0.0/) or [Micrometer](https://micrometer.io/)\n* SLF4J\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvladmihalcea%2Fflexy-pool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvladmihalcea%2Fflexy-pool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvladmihalcea%2Fflexy-pool/lists"}