测试20万qps的web接口一本篇文章主要用于描述单台服务器能否支撑20万qps的web接口访问。动机在以往的经历中所做的web性能测试很少能超过5w的qps。之前的测试流程大致是这样的工作电脑上运行jmeter或者ab在工作电脑或目标服务器上运行web服务测试目标接口的qps。由于在一台电脑上同时运行jmeter和web服务或者是目标服务器配置过低或者是公司网络环境复杂很难判断出web服务的真实极限是什么。最近找工作找的头疼广州招高级或资深的java游戏服务端的岗位好少。开始自学golang看看会不会多一点机会。自己年龄也大了而且人家是否愿意接受golang初学者也是一个问题。转移一下自己的注意力缓解一下急躁看看如何构建一个支撑20qps的web服务。测试环境在这次测试中测试端和目标web服务各自运行在一台独立的服务器上它们之间的交互必须通过网络来完成。本次准备了三台电脑控制端、测试端、web服务端。控制端远程访问测试端和web服务端开启测试观察服务器状态。测试端运行压测程序。web服务端运行目标web服务。控制端操作系统Win10硬件联想小新pro2019i7-10710u6核12线程16g测试端-服务器操作系统Ubuntu26硬件2026年咸鱼买的洋垃圾nec8迷你主机i3-9100t4核4线程1x16g ddr4-3200rootranger2-mini:~# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 39 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Vendor ID: GenuineIntel Model name: Intel(R) Core(TM) i3-9100T CPU 3.10GHz CPU family: 6 Model: 158 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 Stepping: 11 CPU(s) scaling MHz: 24% CPU max MHz: 3700.0000 CPU min MHz: 800.0000 BogoMIPS: 6199.99 rootranger2-mini:~# ip -s link 1: lo: LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 RX: bytes packets errors dropped missed mcast 78574 992 0 0 0 0 TX: bytes packets errors dropped carrier collsns 78574 992 0 0 0 0 2: eno1: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 98:fa:9b:c1:41:2e brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped missed mcast 63765502190 244093755 0 2 0 2783 TX: bytes packets errors dropped carrier collsns 33076517651 244285423 0 7 0 0 altname enp0s31f6 altname enx98fa9bc1412e 3: wlp1s0: BROADCAST,MULTICAST mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000 link/ether 04:ed:33:9b:82:dc brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped missed mcast 17072 135 0 0 0 0 TX: bytes packets errors dropped carrier collsns 17215 115 0 1 0 0 altname wlx04ed339b82dcweb服务端-服务器操作系统Ubuntu26硬件2012年的组装机e3-1230v24核8线程4x4g ddr3-1600rootranger2-pc:~/work/logs# lscpu 架构 x86_64 CPU 运行模式 32-bit, 64-bit Address sizes: 36 bits physical, 48 bits virtual 字节序 Little Endian CPU: 8 在线 CPU 列表 0-7 厂商 ID GenuineIntel 型号名称 Intel(R) Xeon(R) CPU E3-1230 V2 3.30GHz CPU 系列 6 型号 58 每个核的线程数 2 每个座的核数 4 座 1 步进 9 CPU(s) scaling MHz: 63% CPU 最大 MHz 3700.0000 CPU 最小 MHz 1600.0000 BogoMIPS 6798.27 rootranger2-pc:~/work/logs# ip -s link 1: lo: LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 RX: bytes packets errors dropped missed mcast 27638356077 133007240 0 0 0 0 TX: bytes packets errors dropped carrier collsns 27638356077 133007240 0 0 0 0 2: enp3s0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 00:0b:0e:0f:00:ed brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped missed mcast 33664377053 209550051 0 119 0 193 TX: bytes packets errors dropped carrier collsns 53610926946 209417891 0 8 0 0web服务不需要使用复杂的技术栈只要能简洁高效提供一个完整的web接口就行。这里使用了openresty来充当本次测试的web服务。/opt/openresty/nginx/sbin/nginx -c conf/nginx.conf -p /root/work worker_processes 8; error_log logs/error.log; events { worker_connections 65535; } http { server { listen 8080; location / { default_type text/html; content_by_lua_block { ngx.say(phello, world/p) } } } }网络拓扑测试端-服务器有两个网卡一个是无线一个是有线。使用无线网卡测试时直连路由器-xiaomi发现qps太低而且对应的内核线程占用cpu特别高40%以上所以就禁用了无线网卡。使用JMeter测试jmeter配置了60个线程启用了keep-alive。测试结果大约是86000qps。此时web服务端-服务器的cpu空闲率为50%测试端-服务器cpu处于满载状态。测试端rootranger2-mini:/opt/apache-jmeter-5.6.3# ./bin/jmeter.sh -n -t plan/20W_Connections.jmx -l ./result.jtl -e WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release Creating summariser summary Created the tree successfully using plan/20W_Connections.jmx Starting standalone test 2026 Jul 2 12:49:00 CST (1782967740548) Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445 summary 1 in 00:00:00 6.9/s Avg: 32 Min: 32 Max: 32 Err: 0 (0.00%) Active: 8 Started: 8 Finished: 0 summary 1659921 in 00:00:29 56788.3/s Avg: 0 Min: 0 Max: 61 Err: 0 (0.00%) Active: 60 Started: 60 Finished: 0 summary 1659922 in 00:00:29 56511.8/s Avg: 0 Min: 0 Max: 61 Err: 0 (0.00%) summary 2595807 in 00:00:30 86526.9/s Avg: 0 Min: 0 Max: 47 Err: 0 (0.00%) Active: 60 Started: 60 Finished: 0 summary 4255729 in 00:00:59 71677.9/s Avg: 0 Min: 0 Max: 61 Err: 0 (0.00%) summary 2572715 in 00:00:30 85757.2/s Avg: 0 Min: 0 Max: 43 Err: 0 (0.00%) Active: 60 Started: 60 Finished: 0 summary 6828444 in 00:01:29 76403.9/s Avg: 0 Min: 0 Max: 61 Err: 0 (0.00%) summary 2586149 in 00:00:30 86205.0/s Avg: 0 Min: 0 Max: 17 Err: 0 (0.00%) Active: 60 Started: 60 Finished: 0 summary 9414593 in 00:01:59 78867.0/s Avg: 0 Min: 0 Max: 61 Err: 0 (0.00%) summary 2613381 in 00:00:30 87112.7/s Avg: 0 Min: 0 Max: 26 Err: 0 (0.00%) Active: 60 Started: 60 Finished: 0 summary 12027974 in 00:02:29 80522.5/s Avg: 0 Min: 0 Max: 61 Err: 0 (0.00%) summary 2608547 in 00:00:30 86954.5/s Avg: 0 Min: 0 Max: 208 Err: 0 (0.00%) Active: 60 Started: 60 Finished: 0 summary 14636521 in 00:02:59 81598.2/s Avg: 0 Min: 0 Max: 208 Err: 0 (0.00%) summary 2617482 in 00:00:30 87249.4/s Avg: 0 Min: 0 Max: 31 Err: 0 (0.00%) Active: 60 Started: 60 Finished: 0 summary 17254003 in 00:03:29 82408.0/s Avg: 0 Min: 0 Max: 208 Err: 0 (0.00%) summary 2590724 in 00:00:30 86357.5/s Avg: 0 Min: 0 Max: 57 Err: 0 (0.00%) Active: 60 Started: 60 Finished: 0 summary 19844727 in 00:03:59 82902.9/s Avg: 0 Min: 0 Max: 208 Err: 0 (0.00%)cpu12:52:48 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 12:52:51 PM all 59.83 0.00 23.50 0.00 0.00 14.08 0.00 0.00 0.00 2.58 12:52:51 PM 0 69.33 0.00 28.00 0.00 0.00 0.00 0.00 0.00 0.00 2.67 12:52:51 PM 1 70.23 0.00 27.09 0.00 0.00 0.00 0.00 0.00 0.00 2.68 12:52:51 PM 2 30.13 0.00 11.26 0.00 0.00 55.96 0.00 0.00 0.00 2.65 12:52:51 PM 3 69.90 0.00 27.76 0.00 0.00 0.00 0.00 0.00 0.00 2.34 12:52:51 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 12:52:54 PM all 61.02 0.00 24.37 0.00 0.00 13.77 0.00 0.00 0.00 0.83 12:52:54 PM 0 71.57 0.00 27.76 0.00 0.00 0.00 0.00 0.00 0.00 0.67 12:52:54 PM 1 69.57 0.00 29.43 0.00 0.00 0.00 0.00 0.00 0.00 1.00 12:52:54 PM 2 31.10 0.00 13.04 0.00 0.00 55.18 0.00 0.00 0.00 0.67 12:52:54 PM 3 71.76 0.00 27.24 0.00 0.00 0.00 0.00 0.00 0.00 1.00network12:53:00 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 12:53:03 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:53:03 PM eno1 87831.00 87882.33 22407.82 16347.67 0.00 0.00 0.00 18.36 12:53:03 PM wlp1s0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:53:03 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 12:53:06 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:53:06 PM eno1 87705.00 87756.33 22374.45 16322.94 0.00 0.00 0.00 18.33 12:53:06 PM wlp1s0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00web服务端cpu12时53分32秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 12时53分35秒 all 21.87 0.00 23.62 0.04 0.00 7.76 0.00 0.00 0.00 46.71 12时53分35秒 0 25.00 0.00 25.00 0.00 0.00 5.82 0.00 0.00 0.00 44.18 12时53分35秒 1 23.79 0.00 25.86 0.34 0.00 0.34 0.00 0.00 0.00 49.66 12时53分35秒 2 18.95 0.00 22.81 0.00 0.00 0.00 0.00 0.00 0.00 58.25 12时53分35秒 3 22.68 0.00 25.09 0.00 0.00 0.00 0.00 0.00 0.00 52.23 12时53分35秒 4 22.79 0.00 24.15 0.00 0.00 0.00 0.00 0.00 0.00 53.06 12时53分35秒 5 15.75 0.00 15.75 0.00 0.00 47.64 0.00 0.00 0.00 20.87 12时53分35秒 6 21.45 0.00 23.88 0.00 0.00 6.23 0.00 0.00 0.00 48.44 12时53分35秒 7 23.69 0.00 25.44 0.00 0.00 6.97 0.00 0.00 0.00 43.90 12时53分35秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 12时53分38秒 all 21.41 0.00 23.00 0.00 0.00 7.95 0.00 0.00 0.00 47.64 12时53分38秒 0 21.31 0.00 20.96 0.00 0.00 6.53 0.00 0.00 0.00 51.20 12时53分38秒 1 21.96 0.00 22.64 0.00 0.00 0.00 0.00 0.00 0.00 55.41 12时53分38秒 2 25.42 0.00 26.44 0.00 0.00 0.00 0.00 0.00 0.00 48.14 12时53分38秒 3 18.39 0.00 23.08 0.00 0.00 0.33 0.00 0.00 0.00 58.19 12时53分38秒 4 21.69 0.00 24.41 0.00 0.00 0.00 0.00 0.00 0.00 53.90 12时53分38秒 5 15.06 0.00 16.60 0.00 0.00 48.26 0.00 0.00 0.00 20.08 12时53分38秒 6 23.39 0.00 23.05 0.00 0.00 6.78 0.00 0.00 0.00 46.78 12时53分38秒 7 23.31 0.00 26.01 0.00 0.00 6.76 0.00 0.00 0.00 43.92network12时53分30秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 12时53分33秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12时53分33秒 enp3s0 87688.33 87646.00 15966.65 22018.45 0.00 0.00 0.00 18.04 12时53分33秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 12时53分36秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12时53分36秒 enp3s0 87767.67 87720.67 15981.95 22038.95 0.00 0.00 0.00 18.05进程12时53分27秒 UID PID %usr %system %guest %wait %CPU CPU Command 12时53分30秒 0 14 0.00 0.33 0.00 0.00 0.33 0 ksoftirqd/0 12时53分30秒 0 37 0.00 0.33 0.00 0.00 0.33 3 ksoftirqd/3 12时53分30秒 0 49 0.00 0.33 0.00 0.00 0.33 5 ksoftirqd/5 12时53分30秒 0 1439 0.00 0.33 0.00 0.00 0.33 2 nv_queue 12时53分30秒 65534 6022 23.67 31.00 0.00 1.00 54.67 7 nginx 12时53分30秒 65534 6023 23.00 25.33 0.00 0.67 48.33 7 nginx 12时53分30秒 65534 6024 23.00 26.33 0.00 0.00 49.33 3 nginx 12时53分30秒 65534 6025 22.33 23.67 0.00 0.00 46.00 4 nginx 12时53分30秒 65534 6026 23.33 30.67 0.00 1.33 54.00 6 nginx 12时53分30秒 65534 6027 20.33 26.00 0.00 0.67 46.33 1 nginx 12时53分30秒 65534 6028 22.00 24.00 0.00 0.33 46.00 6 nginx 12时53分30秒 65534 6029 23.00 27.67 0.00 0.33 50.67 5 nginx 12时53分30秒 0 6159 0.00 0.33 0.00 0.00 0.33 7 kworker/u32:1-events_unbound 12时53分30秒 0 6840 0.00 0.67 0.00 0.00 0.67 4 kworker/u32:2-flush-8:0 12时53分30秒 0 7536 0.00 0.33 0.00 0.00 0.33 6 kworker/u32:0-flush-8:0 12时53分30秒 1000 7568 0.00 0.33 0.00 0.00 0.33 0 pidstat 12时53分30秒 UID PID %usr %system %guest %wait %CPU CPU Command 12时53分33秒 0 15 0.00 0.33 0.00 0.33 0.33 1 rcu_preempt 12时53分33秒 0 49 0.00 0.33 0.00 0.00 0.33 5 ksoftirqd/5 12时53分33秒 986 697 0.00 0.33 0.00 0.00 0.33 4 systemd-oomd 12时53分33秒 0 1439 0.00 0.33 0.00 0.00 0.33 4 nv_queue 12时53分33秒 1000 5449 0.00 0.33 0.00 0.00 0.33 4 sshd-session 12时53分33秒 65534 6022 22.33 27.33 0.00 0.67 49.67 2 nginx 12时53分33秒 65534 6023 22.00 28.67 0.00 0.33 50.67 2 nginx 12时53分33秒 65534 6024 22.00 26.33 0.00 0.33 48.33 6 nginx 12时53分33秒 65534 6025 22.67 31.33 0.00 1.67 54.00 7 nginx 12时53分33秒 65534 6026 23.67 29.67 0.00 0.33 53.33 5 nginx 12时53分33秒 65534 6027 20.33 25.67 0.00 0.67 46.00 3 nginx 12时53分33秒 65534 6028 21.33 25.00 0.00 0.00 46.33 1 nginx 12时53分33秒 65534 6029 21.67 25.00 0.00 0.00 46.67 0 nginx 12时53分33秒 0 7555 0.00 0.33 0.00 0.00 0.33 1 sadc 12时53分33秒 1000 7568 0.33 0.33 0.00 0.00 0.67 4 pidstat使用wrk测试使用wrk测试时发现qps能达到震惊的22万qps后面无论怎么调整wrk参数这个qps都没有什么显著变化。此时web服务端-服务器趋近于饱和状态。验证wrk是否真的发送了这么多请求对比日志发现wrk真实的发送了这么多http请求。rootranger2-pc:~/work/logs# pwd /root/work/logs rootranger2-pc:~/work/logs# ls access.log error.log nginx.pid rootranger2-pc:~/work/logs# rootranger2-pc:~/work/logs# du -sh access.log 1.1G access.log rootranger2-pc:~/work/logs# wc -l access.log 13592763 access.log测试端rootranger2-mini:/opt/apache-jmeter-5.6.3# wrk -t4 -c150 -d60s -T5s --latency http://192.168.31.54:8080/ Running 1m test http://192.168.31.54:8080/ 4 threads and 150 connections Thread Stats Avg Stdev Max /- Stdev Latency 674.25us 1.21ms 73.68ms 99.34% Req/Sec 56.89k 18.17k 97.00k 75.18% Latency Distribution 50% 517.00us 75% 626.00us 90% 1.03ms 99% 1.65ms 13592630 requests in 1.00m, 2.43GB read Requests/sec: 226166.56 Transfer/sec: 41.41MBnetwork12:43:09 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 12:43:12 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:43:12 PM eno1 225276.67 225479.67 57470.98 25056.86 0.00 0.00 0.00 47.08 12:43:12 PM wlp1s0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:43:12 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 12:43:15 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:43:15 PM eno1 226484.33 226681.33 57781.78 25191.38 0.00 0.00 0.00 47.33 12:43:15 PM wlp1s0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00cpu忘记截取cpu状态了。web服务端cpu12时43分38秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 12时43分41秒 all 36.36 0.00 41.19 0.04 0.00 16.25 0.00 0.00 0.00 6.16 12时43分41秒 0 40.54 0.00 44.26 0.00 0.00 9.12 0.00 0.00 0.00 6.08 12时43分41秒 1 45.70 0.00 48.11 0.00 0.00 0.00 0.00 0.00 0.00 6.19 12时43分41秒 2 40.48 0.00 50.52 0.35 0.00 0.00 0.00 0.00 0.00 8.65 12时43分41秒 3 42.16 0.00 48.43 0.00 0.00 0.00 0.00 0.00 0.00 9.41 12时43分41秒 4 42.76 0.00 49.31 0.00 0.00 0.00 0.00 0.00 0.00 7.93 12时43分41秒 5 0.00 0.00 0.00 0.00 0.00 100.00 0.00 0.00 0.00 0.00 12时43分41秒 6 39.46 0.00 45.92 0.00 0.00 8.84 0.00 0.00 0.00 5.78 12时43分41秒 7 40.89 0.00 44.33 0.00 0.00 9.28 0.00 0.00 0.00 5.50 12时43分41秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 12时43分44秒 all 36.43 0.00 40.91 0.00 0.00 16.20 0.00 0.00 0.00 6.46 12时43分44秒 0 41.08 0.00 44.11 0.00 0.00 9.09 0.00 0.00 0.00 5.72 12时43分44秒 1 45.86 0.00 49.31 0.00 0.00 0.00 0.00 0.00 0.00 4.83 12时43分44秒 2 42.41 0.00 47.93 0.00 0.00 0.00 0.00 0.00 0.00 9.66 12时43分44秒 3 42.32 0.00 49.15 0.00 0.00 0.00 0.00 0.00 0.00 8.53 12时43分44秒 4 42.51 0.00 48.08 0.00 0.00 0.00 0.00 0.00 0.00 9.41 12时43分44秒 5 0.00 0.00 0.00 0.00 0.00 100.00 0.00 0.00 0.00 0.00 12时43分44秒 6 38.75 0.00 45.33 0.00 0.00 9.00 0.00 0.00 0.00 6.92 12时43分44秒 7 39.46 0.00 44.56 0.00 0.00 9.18 0.00 0.00 0.00 6.80network12时43分33秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 12时43分36秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12时43分36秒 enp3s0 226114.33 225914.33 24243.17 56750.97 0.00 0.00 0.00 46.49 12时43分36秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 12时43分39秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12时43分39秒 enp3s0 225507.33 225314.67 24178.99 56604.47 0.00 0.00 0.00 46.37进程12时43分31秒 UID PID %usr %system %guest %wait %CPU CPU Command 12时43分34秒 0 49 0.00 98.33 0.00 0.67 98.33 5 ksoftirqd/5 12时43分34秒 0 1439 0.00 0.33 0.00 0.00 0.33 3 nv_queue 12时43分34秒 1000 5690 0.33 0.00 0.00 0.00 0.33 6 sudo 12时43分34秒 65534 6022 35.67 46.00 0.00 8.33 81.67 1 nginx 12时43分34秒 65534 6023 32.67 40.33 0.00 15.33 73.00 4 nginx 12时43分34秒 65534 6024 34.33 43.67 0.00 10.33 78.00 4 nginx 12时43分34秒 65534 6025 34.33 46.67 0.00 9.33 81.00 3 nginx 12时43分34秒 65534 6026 39.00 47.33 0.00 6.00 86.33 7 nginx 12时43分34秒 65534 6027 34.00 44.00 0.00 13.00 78.00 2 nginx 12时43分34秒 65534 6028 34.67 44.67 0.00 10.33 79.33 0 nginx 12时43分34秒 65534 6029 37.33 43.33 0.00 9.67 80.67 2 nginx 12时43分34秒 1000 7531 0.33 0.33 0.00 0.00 0.67 6 pidstat 12时43分34秒 UID PID %usr %system %guest %wait %CPU CPU Command 12时43分37秒 0 15 0.00 0.33 0.00 0.67 0.33 2 rcu_preempt 12时43分37秒 0 49 0.00 98.67 0.00 0.67 98.67 5 ksoftirqd/5 12时43分37秒 1000 4072 0.33 0.00 0.00 0.00 0.33 6 sshd-session 12时43分37秒 65534 6022 34.67 42.67 0.00 13.00 77.33 4 nginx 12时43分37秒 65534 6023 36.00 42.67 0.00 11.67 78.67 6 nginx 12时43分37秒 65534 6024 37.67 43.33 0.00 9.00 81.00 0 nginx 12时43分37秒 65534 6025 34.33 42.33 0.00 10.00 76.67 4 nginx 12时43分37秒 65534 6026 35.67 42.33 0.00 10.00 78.00 1 nginx 12时43分37秒 65534 6027 36.67 44.67 0.00 8.00 81.33 7 nginx 12时43分37秒 65534 6028 34.67 42.33 0.00 10.33 77.00 2 nginx 12时43分37秒 65534 6029 35.33 46.67 0.00 8.00 82.00 7 nginx 12时43分37秒 1000 7531 0.00 0.33 0.00 0.33 0.33 3 pidstat结论没想到单台服务器能提供超过20w的qps颠覆了之前的认知在准备测试之前还曾设想是否要通过负载均衡来组合多个web服务端。之前使用jmeter和ab来测试web接口这两个工具没有完全测试到性能瓶颈可能是使用方式不对。后续规划现在使用了http的keep-alive机制如果是直接使用短连接qps能达到多少。web服务端-服务器处于饱和状态是网络达到了瓶颈或者说网络收发包的极限是什么还是cpu达到了瓶颈这个需要测量一下。引入多个web服务端和负载均衡。监控服务器状态是手动敲的命令后续弄个zabbix测试网络收发包的延迟