{"id":19670942,"url":"https://github.com/emc-mongoose/mongoose-storage-driver-netty","last_synced_at":"2026-05-11T01:47:35.830Z","repository":{"id":150889548,"uuid":"175858628","full_name":"emc-mongoose/mongoose-storage-driver-netty","owner":"emc-mongoose","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-23T09:01:25.000Z","size":114,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-01-10T03:37:18.813Z","etag":null,"topics":["extension","netty","performance-test","plugin"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emc-mongoose.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2019-03-15T16:49:50.000Z","updated_at":"2024-11-23T08:56:22.000Z","dependencies_parsed_at":"2024-11-22T00:03:47.359Z","dependency_job_id":null,"html_url":"https://github.com/emc-mongoose/mongoose-storage-driver-netty","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emc-mongoose%2Fmongoose-storage-driver-netty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emc-mongoose%2Fmongoose-storage-driver-netty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emc-mongoose%2Fmongoose-storage-driver-netty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emc-mongoose%2Fmongoose-storage-driver-netty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emc-mongoose","download_url":"https://codeload.github.com/emc-mongoose/mongoose-storage-driver-netty/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240980888,"owners_count":19888344,"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":["extension","netty","performance-test","plugin"],"created_at":"2024-11-11T17:07:33.051Z","updated_at":"2026-05-11T01:47:35.759Z","avatar_url":"https://github.com/emc-mongoose.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Gitter chat](https://badges.gitter.im/emc-mongoose.png)](https://gitter.im/emc-mongoose)\n[![Issue Tracker](https://img.shields.io/badge/Issue-Tracker-red.svg)](https://mongoose-issues.atlassian.net/projects/GOOSE)\n[![CI status](https://gitlab.com/emc-mongoose/mongoose-storage-driver-netty/badges/master/pipeline.svg)](https://gitlab.com/emc-mongoose/mongoose-storage-driver-netty/commits/master)\n[![Tag](https://img.shields.io/github/tag/emc-mongoose/mongoose-storage-driver-netty.svg)](https://github.com/emc-mongoose/mongoose-storage-driver-netty/tags)\n[![Maven metadata URL](https://img.shields.io/maven-metadata/v/http/central.maven.org/maven2/com/github/emc-mongoose/mongoose-storage-driver-netty/maven-metadata.xml.svg)](http://central.maven.org/maven2/com/github/emc-mongoose/mongoose-storage-driver-netty)\n[![Sonatype Nexus (Releases)](https://img.shields.io/nexus/r/http/oss.sonatype.org/com.github.emc-mongoose/mongoose-storage-driver-netty.svg)](http://oss.sonatype.org/com.github.emc-mongoose/mongoose-storage-driver-netty)\n[![Docker Pulls](https://img.shields.io/docker/pulls/emcmongoose/mongoose-storage-driver-netty.svg)](https://hub.docker.com/r/emcmongoose/mongoose-storage-driver-netty/)\n\n# [Netty](https://netty.io/)-based Storage Driver\n\nNetty uses its own I/O worker thread pool. The count of these threads is controlled by the `storage-driver-threads`\nconfiguration option. However the connection pool allows to keep much more open connections at any moment of time. The\ncount of the open connections may be limited by `storage-driver-limit-concurrency` configuration option.\n\n## 1. Configuration Reference\n\n| Name                                           | Type         | Default Value    | Description                                      |\n|:-----------------------------------------------|:-------------|:-----------------|:-------------------------------------------------|\n| storage-net-node-addrs                         | List of strings | 127.0.0.1 | The list of the storage node IPs or hostnames to use for HTTP load. May include port numbers.\n| storage-net-node-connAttemptsLimit             | Integer \u003e= 0 | 0 | The limit for the subsequent connection attempts for each storage endpoint node. The node is excluded from the connection pool forever if the node has more subsequent connection failures. The default value (0) means no limit.\n| storage-net-node-port                          | Integer \u003e 0 | 7 | The common port number to access the storage nodes, may be overriden adding the port number to the storage-driver-addrs, for example: \"127.0.0.1:9020,127.0.0.1:9022,...\"\n| storage-net-node-slice                         | Flag | false | Slice the storage node addresses between the mongoose nodes using the greatest common divisor or not\n| storage-net-bindBacklogSize                    | Integer \u003e= 0 | 0 |\n| storage-net-interestOpQueued                   | Flag | false |\n| storage-net-keepAlive                          | Flag | true |\n| storage-net-linger                             | Integer \u003e= 0 | 0 |\n| storage-net-reuseAddr                          | Flag | true |\n| storage-net-rcvBuf                             | Fixed size \u003e= 0 | 0 | The network connection input buffer size. Estimated automatically if 0 (default)\n| storage-net-sndBuf                             | Fixed size \u003e= 0 | 0 | The network connection output buffer size. Estimated automatically if 0 (default)\n| storage-net-selectInterval                     | Integer \u003e 0 | 100 |\n| storage-net-tcpNoDelay                         | Flag | true |\n| storage-net-timeoutMilliSec                    | Integer \u003e= 0 | 1000000 | The socket timeout\n| storage-net-ioRatio                            | 0 \u003c Integer \u003c 100 | 50 | Internal [Netty's I/O ratio parameter](https://github.com/netty/netty/issues/1154#issuecomment-14870909). It's recommended to make it higher for large request/response payload (\u003e1MB)\n| storage-net-transport                          | Enum | nio | The I/O transport to use (see the [details](http://netty.io/wiki/native-transports.html)). By default tries to use \"nio\" (the most compatible). For Linux try to use \"epoll\" or \"iouring\", for MacOS/BSD use \"kqueue\" (requires rebuilding).\n| storage-net-ssl-ciphers                        | List of strings | null | The list of ciphers to use if SSL is enabled. First cipher in the list that matches is applied. Make sure to match used ciphers and protocols. \n| storage-net-ssl-enabled                        | Flag | false | The flag to enable the load through SSL/TLS. Currently only HTTPS implementation is available. Have no effect if configured storage type is filesystem.\n| storage-net-ssl-protocols                      | List of strings | TLSv1.1, TLSv1.2 | The list of secure protocols to use if SSL is enabled \n| storage-net-ssl-provider                       | String | OPENSSL | The SSL provider. May be \"OPENSSL\" (better performance) or \"JDK\" (fallback)\n| storage-net-writeSpinCount                     | Integer | 1 | Maximum loop count for a write operation until WritableByteChannel.write(ByteBuffer) returns a non-zero value.\n\n## 2. Node Balancing\n\nMongoose uses the round-robin way to distribute I/O tasks if multiple storage endpoints are used.\nMongoose will try to distribute the active connections equally among the endpoints if a connection fails.\n\n## 3. SSL/TLS\n\n```bash\njava -jar mongoose-\u003cVERSION\u003e.jar \\\n    --storage-net-ssl-enabled \\\n    --storage-net-node-port=9021 \\\n    ...\n```\n\n## 4. Connection Timeout\n\n```bash\njava -jar mongoose-\u003cVERSION\u003e.jar \\\n    --storage-net-timeoutMillisec=100000 \\\n    ...\n```\n\n## 5. I/O Buffer Size\n\nMongoose automatically adopts the input and output buffer sizes depending on the step info. For\nexample, for *create* I/O type the input buffer size is set to the minimal value (4KB) and the\noutput buffer size is set to configured data item size (if any). If *read* I/O type is used the\nbehavior is right opposite - specific input buffer size and minimal output buffer size. This\nimproves the I/O performance significantly. But users may set the buffer sizes manually.\n\nExample: setting the *input* buffer to 100KB:\n```bash\njava -jar mongoose-\u003cVERSION\u003e.jar \\\n    --storage-net-rcvBuf=100KB \\\n    ...\n```\n\nExample: setting the *output* buffer to 10MB:\n```bash\njava -jar mongoose-\u003cVERSION\u003e.jar \\\n    --storage-net-sndBuf=10MB \\\n    ...\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femc-mongoose%2Fmongoose-storage-driver-netty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femc-mongoose%2Fmongoose-storage-driver-netty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femc-mongoose%2Fmongoose-storage-driver-netty/lists"}