1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
name: sockudo-benchmark
services:
sockudo-node:
build:
context: ./
dockerfile: ./test/multinode/Dockerfile.multinode
volumes:
- ./target:/app/target:ro
- ./config:/app/config:ro
environment:
- DEBUG=false
- PORT=6003
- HOST=0.0.0.0
- METRICS_ENABLED=true
- METRICS_PORT=9603
- SHUTDOWN_GRACE_PERIOD=0
- SOCKUDO_DEFAULT_APP_ID=app-id
- SOCKUDO_DEFAULT_APP_KEY=app-key
- SOCKUDO_DEFAULT_APP_SECRET=app-secret
- SOCKUDO_ENABLE_CLIENT_MESSAGES=true
- SOCKUDO_DEFAULT_APP_MAX_CLIENT_EVENTS_PER_SECOND=10000
- SOCKUDO_DEFAULT_APP_MAX_CONNECTIONS=100000
ports:
- "6003:6003"
- "9603:9603"
networks:
- sockudo-benchmark-test
command: ${SOCKUDO_COMMAND:-/app/target/debug/sockudo}
# stdin_open: true
# tty: true
# Resource limits optimized for memory-only (more resources available)
# deploy:
# resources:
# limits:
# # All resources for Sockudo (no Redis)
# cpus: '8.0' # Use all available CPU
# memory: 8G # Use most available memory
# reservations:
# cpus: '4.0' # Minimum guaranteed CPU
# memory: 4G # Minimum guaranteed memory
# System limits optimized for high connection count
ulimits:
nofile:
soft: 131072 # File descriptors for connections
hard: 131072
nproc:
soft: 65536 # Process limit
hard: 65536
# Security options for network optimization
security_opt:
- no-new-privileges:true
# Run with higher priority
privileged: false
cap_add:
- NET_ADMIN # For network optimization
- SYS_RESOURCE # For ulimit management
networks:
sockudo-benchmark-test:
driver: bridge
driver_opts:
com.docker.network.bridge.name: sockudo0
com.docker.network.driver.mtu: 1500
com.docker.network.bridge.enable_ip_masquerade: "true"
com.docker.network.bridge.enable_icc: "true"
com.docker.network.bridge.host_binding_ipv4: "0.0.0.0"