1.性能测试
测试场景1
测试环境 8 core cpu server
jMeter 模拟10w个设备发送16w消息到 server。每个消息512 Bytes
- 问题1 - Jmeter 受机器端口65535限制,只能通过多个jmeter模拟
- 问题2 - 10w 个设备发送到linux 进程后,linux 内核的IRQ (Interrupt Request)会集中在一个cpu上,破坏了CPU cache,严重影响了server的性能。 通过禁用 /etc/init.d/irqbalance stop 和 设置RFS 和 RPS 解决
#!/bin/bash
#disable irqbalnace
/etc/init.d/irqbalance stop &>/dev/null
# Enable RPS (Receive Packet Steering), RFS
rfc=4096
sum=0
ccHex=0
cc=$(grep -c processor /proc/cpuinfo)
rsfe=$(echo $cc*$rfc | bc)
sysctl -w net.core.rps_sock_flow_entries=$rsfe
for((i=0; i<$cc; i++))
do
sum=`echo "2^$i+$sum" | bc`
done
ccHex=$(printf "%x" $sum)
for fileRps in $(ls /sys/class/net/eth*/queues/rx-*/rps_cpus)
do
echo $ccHex > $fileRps
done
for fileRfc in $(ls /sys/class/net/eth*/queues/rx-*/rps_flow_cnt)
do
echo $rfc > $fileRfc
done