88 lines
2.2 KiB
Bash
Executable File
88 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Simple performance test script for sending requests while collecting pprof data
|
|
|
|
set -e
|
|
|
|
SERVER_URL=${SERVER_URL:-"http://localhost:8080"}
|
|
DURATION=${DURATION:-30} # Test duration (seconds)
|
|
CONCURRENT=${CONCURRENT:-1} # Number of concurrent requests
|
|
|
|
echo "=========================================="
|
|
echo "Performance Test Script"
|
|
echo "=========================================="
|
|
echo "SERVER_URL: $SERVER_URL"
|
|
echo "DURATION: ${DURATION}s"
|
|
echo "CONCURRENT: $CONCURRENT"
|
|
echo ""
|
|
|
|
# Test request JSON
|
|
TEST_REQUEST='{
|
|
"model": "default",
|
|
"messages": [
|
|
{"role": "user", "content": "Hello, how are you?"}
|
|
],
|
|
"stream": true,
|
|
"max_tokens": 100
|
|
}'
|
|
|
|
# Check if server is available
|
|
if ! curl -s "${SERVER_URL}/health" > /dev/null 2>&1; then
|
|
echo "Error: Server not available (${SERVER_URL}/health)"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Starting to send test requests..."
|
|
echo ""
|
|
|
|
# Function to send streaming request
|
|
send_stream_request() {
|
|
local request_num=$1
|
|
local start_time=$(date +%s.%N)
|
|
|
|
curl -s -N -X POST "${SERVER_URL}/v1/chat/completions" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$TEST_REQUEST" \
|
|
> /dev/null 2>&1
|
|
|
|
local end_time=$(date +%s.%N)
|
|
local duration=$(echo "$end_time - $start_time" | bc)
|
|
echo "Request $request_num completed, duration: ${duration}s"
|
|
}
|
|
|
|
# Send requests concurrently
|
|
if [ "$CONCURRENT" -eq 1 ]; then
|
|
# Single-threaded mode: continuously send requests
|
|
end_time=$(($(date +%s) + DURATION))
|
|
request_count=0
|
|
|
|
while [ $(date +%s) -lt $end_time ]; do
|
|
request_count=$((request_count + 1))
|
|
send_stream_request $request_count
|
|
done
|
|
|
|
echo ""
|
|
echo "Test completed, sent $request_count requests"
|
|
else
|
|
# Multi-threaded mode: send requests concurrently
|
|
end_time=$(($(date +%s) + DURATION))
|
|
request_count=0
|
|
|
|
while [ $(date +%s) -lt $end_time ]; do
|
|
# Start concurrent requests
|
|
for i in $(seq 1 $CONCURRENT); do
|
|
request_count=$((request_count + 1))
|
|
send_stream_request $request_count &
|
|
done
|
|
|
|
# Wait for all requests to complete
|
|
wait
|
|
|
|
# Brief rest to avoid overload
|
|
sleep 0.1
|
|
done
|
|
|
|
echo ""
|
|
echo "Test completed, sent $request_count requests"
|
|
fi
|