O GNU Parallel tem uma sobrecarga de 2-5 ms por trabalho que está se aproximando de suas 100 entradas por segundo. Para atenuar isso, você pode envolvê-lo com parallel --pipe
. Isso deve executar cerca de 25.000 tarefas em paralelo por segundo em uma máquina de 100 núcleos:
#!/bin/bash
host="localhost"
port="********"
mycurl() {
if [ "${15}" != "" ]; then
# The numbering here should probably be adjusted
data="field1=${1}&field2=${2}&field3=${3}&field4=${4}&field5=${5}&field6=${6}&field7=${7}&field8=${8}&field9=${9}&field10=${10}"
curl --output /dev/null -d $data --silent -X POST https://myapi/myendpoint;
fi
}
export -f mycurl
#----------------------LOOP starts------------------------
while true;
do
nc -d $host $port
done |
parallel -j100 --pipe --block 100k parallel --colsep , -j0 mycurl