axiodb 12.10.24 → 12.10.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +13 -3
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -408,14 +408,14 @@ See the [Docker Deployment](#-docker-deployment) section below, and `Docker/READ
408
408
 
409
409
  Each `AxioDBCloud` client opens `maxPoolSize` TCP sockets (default: 10), and the server holds one socket per connected client — both count against the OS's open-file-descriptor limit. Most Linux distros default `ulimit -n` to 1024 per process, which is enough for only ~100 clients at the default pool size before the server starts refusing new connections with `EMFILE`/`ENFILE`.
410
410
 
411
- If you're deploying towards the 1,000+ concurrent connections the server supports, raise the limit before starting the process:
411
+ The published Docker image already raises its own soft limit to 65536 on startup (see `Docker/Dockerfile`'s `CMD`), so this is normally only something to think about on bare-metal/host installs, or if your Docker host's *hard* limit is itself capped below 65536:
412
412
 
413
413
  ```bash
414
- ulimit -n 65536 # current shell / process
414
+ ulimit -n 65536 # current shell / process (non-Docker deployments)
415
415
  node lib/config/DB.js
416
416
  ```
417
417
 
418
- In Docker, set it on the container instead of the host shell:
418
+ If the container still refuses connections, the host's hard limit is the ceiling to raise instead:
419
419
 
420
420
  ```bash
421
421
  docker run --ulimit nofile=65536:65536 -p 27018:27018 -p 27019:27019 theankansaha/axiodb
@@ -435,6 +435,16 @@ services:
435
435
 
436
436
  On the client side, prefer a smaller `maxPoolSize` per instance rather than raising it — the least-busy routing (see [Connection Pooling](#-axiodbcloud--connecting-remotely) above) already avoids the head-of-line blocking a bigger pool would otherwise compensate for.
437
437
 
438
+ ### Raising libuv's thread pool for higher disk-I/O concurrency
439
+
440
+ File reads/writes (`FileManager`) go through Node's async `fs` APIs, which run on libuv's threadpool - 4 threads by default, regardless of how many TCP connections are open. Under many concurrent clients doing real disk I/O at once, that pool - not connection count - is the throughput ceiling.
441
+
442
+ The published image (`Docker/runner.js`) computes a default automatically from the container's actual CPU allotment (its cgroup quota, not the host's core count - `--cpus`/Kubernetes `resources.limits.cpu` are read directly, since Node has no stdlib API for this), roughly `4 × allotted CPUs`, clamped to `[4, 64]`. Override it explicitly if you want a fixed value instead, no rebuild required:
443
+
444
+ ```bash
445
+ docker run -e UV_THREADPOOL_SIZE=16 -p 27018:27018 -p 27019:27019 theankansaha/axiodb
446
+ ```
447
+
438
448
  ---
439
449
 
440
450
  ## 🐳 Docker Deployment
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axiodb",
3
- "version": "12.10.24",
3
+ "version": "12.10.25",
4
4
  "description": "The Pure JavaScript Alternative to SQLite. Embedded NoSQL database for Node.js with MongoDB-style queries, zero native dependencies, built-in InMemoryCache, and web GUI. Perfect for desktop apps, CLI tools, and embedded systems. No compilation, no platform issues—pure JavaScript from npm install to production.",
5
5
  "main": "./lib/config/DB.js",
6
6
  "types": "./lib/config/DB.d.ts",