✅ Fixed GPU Marketplace Service Issue - Created dedicated launcher script to avoid uvicorn workers warning - Resolved port 8003 conflict by killing conflicting process - GPU marketplace service now running successfully on port 8003 - Service responding with healthy status and marketplace stats ✅ Service Status - aitbc-gpu.service: Active and running - Endpoint: http://localhost:8003/health - Marketplace stats: 0 GPUs, 0 bids (ready for listings) - Production logging enabled ✅ Technical Fix - Created gpu_marketplace_launcher.py for proper uvicorn execution - Updated systemd service to use launcher script - Fixed quoting issues in ExecStart configuration - Resolved port binding conflicts 🚀 GPU marketplace service is now operational!
47 lines
1.1 KiB
Desktop File
47 lines
1.1 KiB
Desktop File
[Unit]
|
|
Description=AITBC Production GPU Marketplace Service
|
|
After=network.target aitbc-marketplace.service
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=root
|
|
Group=root
|
|
WorkingDirectory=/opt/aitbc
|
|
Environment=PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin
|
|
Environment=NODE_ID=aitbc
|
|
Environment=GPU_MARKETPLACE_PORT=8003
|
|
Environment=PYTHONPATH=/opt/aitbc/production/services
|
|
EnvironmentFile=/opt/aitbc/production/.env
|
|
|
|
# Production execution
|
|
ExecStart=/opt/aitbc/venv/bin/python /opt/aitbc/production/services/gpu_marketplace_launcher.py
|
|
ExecReload=/bin/kill -HUP $MAINPID
|
|
KillMode=mixed
|
|
TimeoutStopSec=10
|
|
|
|
# Production reliability
|
|
Restart=always
|
|
RestartSec=5
|
|
StartLimitBurst=5
|
|
StartLimitIntervalSec=60
|
|
|
|
# Production logging
|
|
StandardOutput=journal
|
|
StandardError=journal
|
|
SyslogIdentifier=aitbc-gpu-marketplace-production
|
|
|
|
# Production security
|
|
NoNewPrivileges=true
|
|
ProtectSystem=strict
|
|
ProtectHome=true
|
|
ReadWritePaths=/opt/aitbc/production/data/marketplace /opt/aitbc/production/logs/marketplace
|
|
|
|
# Production performance
|
|
LimitNOFILE=65536
|
|
LimitNPROC=4096
|
|
MemoryMax=2G
|
|
CPUQuota=75%
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|