Open vrnobody opened 1 week ago
can you try to lower maxConcurrentUploads
on the client instead? is there a CDN inbetween? seems not
Forget about my questions, you provided all steps. I tried it now and I cannot reproduce it on either 1.8.15 or #3462, that is on Ubuntu 22.
possibly only an issue on Windows? Will take some time for me.
I cannot reproduce this on Windows 10 either, neither with the 1.8.15 release for 64 bit, nor self-compiled main.
测试了 v1.8.16 仍然存在相同的问题。不确定和 iperf 版本是否有关系。
iperf3.exe --version
iperf 3.17.1 (cJSON 1.7.15)
CYGWIN_NT-10.0-19045 DESKTOP-VD1SRRF 3.5.3-1.x86_64 2024-04-03 17:25 UTC x86_64
Optional features available: CPU affinity setting, authentication, support IPv4 don't fragment, POSIX threads
我的电脑很慢,试试增加 -t
-P
参数:
iperf3.exe -c 127.0.0.1 -p 6003 -t 15 -P 10
maxConcurrentUploads
是关键问题。完全禁止客户端并发 upload 可以消灭这个 bug 。
新的日志,没什么变化:
iperf3.exe -c 127.0.0.1 -p 6003 -t 10 -P 2
Connecting to host 127.0.0.1, port 6003
[ 5] local 127.0.0.1 port 5361 connected to 127.0.0.1 port 6003
[ 7] local 127.0.0.1 port 5363 connected to 127.0.0.1 port 6003
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.02 sec 92.5 MBytes 762 Mbits/sec
[ 7] 0.00-1.02 sec 95.4 MBytes 785 Mbits/sec
[SUM] 0.00-1.02 sec 188 MBytes 1.55 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 1.02-2.00 sec 74.9 MBytes 640 Mbits/sec
[ 7] 1.02-2.00 sec 79.9 MBytes 683 Mbits/sec
[SUM] 1.02-2.00 sec 155 MBytes 1.32 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 2.00-3.02 sec 67.4 MBytes 557 Mbits/sec
[ 7] 2.00-3.02 sec 74.9 MBytes 619 Mbits/sec
[SUM] 2.00-3.02 sec 142 MBytes 1.18 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 3.02-4.01 sec 84.9 MBytes 717 Mbits/sec
[ 7] 3.02-4.01 sec 74.9 MBytes 633 Mbits/sec
[SUM] 3.02-4.01 sec 160 MBytes 1.35 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 4.01-5.02 sec 74.9 MBytes 623 Mbits/sec
[ 7] 4.01-5.02 sec 77.5 MBytes 645 Mbits/sec
[SUM] 4.01-5.02 sec 152 MBytes 1.27 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 5.02-6.00 sec 79.9 MBytes 679 Mbits/sec
[ 7] 5.02-6.00 sec 72.2 MBytes 614 Mbits/sec
[SUM] 5.02-6.00 sec 152 MBytes 1.29 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 6.00-7.01 sec 95.0 MBytes 794 Mbits/sec
[ 7] 6.00-7.01 sec 17.6 MBytes 147 Mbits/sec
[SUM] 6.00-7.01 sec 113 MBytes 941 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 7.01-8.01 sec 125 MBytes 1.04 Gbits/sec
[ 7] 7.01-8.01 sec 0.00 Bytes 0.00 bits/sec <------------
[SUM] 7.01-8.01 sec 125 MBytes 1.04 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 8.01-9.01 sec 115 MBytes 970 Mbits/sec
[ 7] 8.01-9.01 sec 0.00 Bytes 0.00 bits/sec
[SUM] 8.01-9.01 sec 115 MBytes 970 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 9.01-10.01 sec 117 MBytes 977 Mbits/sec
[ 7] 9.01-10.01 sec 0.00 Bytes 0.00 bits/sec
[SUM] 9.01-10.01 sec 117 MBytes 977 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.01 sec 926 MBytes 776 Mbits/sec sender <------------
[ 5] 0.00-10.03 sec 906 MBytes 758 Mbits/sec receiver
[ 7] 0.00-10.01 sec 492 MBytes 412 Mbits/sec sender <------------
[ 7] 0.00-10.03 sec 454 MBytes 380 Mbits/sec receiver
[SUM] 0.00-10.01 sec 1.39 GBytes 1.19 Gbits/sec sender
[SUM] 0.00-10.03 sec 1.33 GBytes 1.14 Gbits/sec receiver
iperf Done.
xray.exe -c serv.json
Xray 1.8.16 (Xray, Penetrates Everything.) 9432a60 (go1.22.4 windows/amd64)
A unified platform for anti-censorship.
2024/06/21 23:49:51 [Info] infra/conf/serial: Reading config: serv.json
2024/06/21 23:49:51 [Debug] app/log: Logger started
2024/06/21 23:49:51 [Debug] app/proxyman/inbound: creating stream worker on 127.0.0.1:6001
2024/06/21 23:49:51 [Info] transport/internet/splithttp: listening TCP(for SH) on 127.0.0.1:6001
2024/06/21 23:49:51 [Warning] core: Xray 1.8.16 started
2024/06/21 23:50:02 [Info] [3811967589] proxy/vless/inbound: firstLen = 0
2024/06/21 23:50:05 [Info] [2285601385] proxy/vless/inbound: firstLen = 0
2024/06/21 23:50:05 [Info] [2285601385] proxy/vless/inbound: received request for tcp:127.0.0.1:5201
2024/06/21 23:50:05 [Info] [2285601385] app/dispatcher: default route for tcp:127.0.0.1:5201
2024/06/21 23:50:05 127.0.0.1:4086 accepted tcp:127.0.0.1:5201 [spin >> direct]
2024/06/21 23:50:05 [Info] [2285601385] transport/internet/tcp: dialing TCP to tcp:127.0.0.1:5201
2024/06/21 23:50:05 [Debug] transport/internet: dialing to tcp:127.0.0.1:5201
2024/06/21 23:50:05 [Info] [2285601385] proxy/freedom: connection opened to tcp:127.0.0.1:5201, local endpoint 127.0.0.1:4099, remote endpoint 127.0.0.1:5201
2024/06/21 23:50:05 [Info] [2285601385] proxy: CopyRawConn readv
2024/06/21 23:50:05 [Info] [4131515818] proxy/vless/inbound: firstLen = 0
2024/06/21 23:50:05 [Info] [4131515818] proxy/vless/inbound: received request for tcp:127.0.0.1:5201
2024/06/21 23:50:05 [Info] [4131515818] app/dispatcher: default route for tcp:127.0.0.1:5201
2024/06/21 23:50:05 [Info] [4131515818] transport/internet/tcp: dialing TCP to tcp:127.0.0.1:5201
2024/06/21 23:50:05 127.0.0.1:4086 accepted tcp:127.0.0.1:5201 [spin >> direct]
2024/06/21 23:50:05 [Debug] transport/internet: dialing to tcp:127.0.0.1:5201
2024/06/21 23:50:05 [Info] [4131515818] proxy/freedom: connection opened to tcp:127.0.0.1:5201, local endpoint 127.0.0.1:4101, remote endpoint 127.0.0.1:5201
2024/06/21 23:50:05 [Info] [4131515818] proxy: CopyRawConn readv
2024/06/21 23:50:05 [Info] [355862417] proxy/vless/inbound: firstLen = 0
2024/06/21 23:50:05 [Info] [355862417] proxy/vless/inbound: received request for tcp:127.0.0.1:5201
2024/06/21 23:50:05 [Info] [355862417] app/dispatcher: default route for tcp:127.0.0.1:5201
2024/06/21 23:50:05 [Info] [355862417] transport/internet/tcp: dialing TCP to tcp:127.0.0.1:5201
2024/06/21 23:50:05 [Debug] transport/internet: dialing to tcp:127.0.0.1:5201
2024/06/21 23:50:05 [Info] [355862417] proxy/freedom: connection opened to tcp:127.0.0.1:5201, local endpoint 127.0.0.1:4103, remote endpoint 127.0.0.1:5201
2024/06/21 23:50:05 [Info] [355862417] proxy: CopyRawConn readv
2024/06/21 23:50:05 127.0.0.1:4086 accepted tcp:127.0.0.1:5201 [spin >> direct]
2024/06/21 23:50:06 [Info] [4131515818] app/proxyman/inbound: connection ends > proxy/vless/inbound: connection ends > proxy/vless/inbound: failed to transfer request payload > transport/internet/splithttp: packet queue is too large
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] [355862417] app/proxyman/inbound: connection ends > proxy/vless/inbound: connection ends > proxy/vless/inbound: failed to transfer request payload > transport/internet/splithttp: packet queue is too large
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to upload > transport/internet/splithttp: splithttp packet queue closed
2024/06/21 23:50:11 [Info] [2285601385] app/proxyman/inbound: connection ends > proxy/vless/inbound: connection ends > context canceled
xray.exe -c client.json
Xray 1.8.16 (Xray, Penetrates Everything.) 9432a60 (go1.22.4 windows/amd64)
A unified platform for anti-censorship.
2024/06/21 23:49:54 [Info] infra/conf/serial: Reading config: client.json
2024/06/21 23:49:54 [Debug] app/log: Logger started
2024/06/21 23:49:54 [Debug] app/proxyman/inbound: creating stream worker on 127.0.0.1:6003
2024/06/21 23:49:54 [Info] transport/internet/tcp: listening TCP on 127.0.0.1:6003
2024/06/21 23:49:54 [Warning] core: Xray 1.8.16 started
2024/06/21 23:49:59 [Debug] [2608139424] proxy/dokodemo: processing connection from: 127.0.0.1:4085
2024/06/21 23:49:59 [Info] [2608139424] proxy/dokodemo: received request for 127.0.0.1:4085
2024/06/21 23:49:59 [Info] [2608139424] app/dispatcher: default route for tcp:127.0.0.1:5201
2024/06/21 23:49:59 [Info] [2608139424] transport/internet/splithttp: dialing splithttp to tcp:127.0.0.1:6001
2024/06/21 23:49:59 127.0.0.1:4085 accepted tcp:127.0.0.1:5201 [dkd >> agentout]
2024/06/21 23:49:59 [Debug] transport/internet: dialing to tcp:127.0.0.1:6001
2024/06/21 23:49:59 [Info] [2608139424] proxy/vless/outbound: tunneling request to tcp:127.0.0.1:5201 via 127.0.0.1:6001
2024/06/21 23:50:03 [Info] [2608139424] app/proxyman/inbound: connection ends > proxy/dokodemo: connection ends > context canceled
2024/06/21 23:50:05 [Debug] [1172667396] proxy/dokodemo: processing connection from: 127.0.0.1:4098
2024/06/21 23:50:05 [Info] [1172667396] proxy/dokodemo: received request for 127.0.0.1:4098
2024/06/21 23:50:05 [Info] [1172667396] app/dispatcher: default route for tcp:127.0.0.1:5201
2024/06/21 23:50:05 [Info] [1172667396] transport/internet/splithttp: dialing splithttp to tcp:127.0.0.1:6001
2024/06/21 23:50:05 [Info] [1172667396] proxy/vless/outbound: tunneling request to tcp:127.0.0.1:5201 via 127.0.0.1:6001
2024/06/21 23:50:05 127.0.0.1:4098 accepted tcp:127.0.0.1:5201 [dkd >> agentout]
2024/06/21 23:50:05 [Debug] [99350724] proxy/dokodemo: processing connection from: 127.0.0.1:4100
2024/06/21 23:50:05 [Info] [99350724] proxy/dokodemo: received request for 127.0.0.1:4100
2024/06/21 23:50:05 [Info] [99350724] app/dispatcher: default route for tcp:127.0.0.1:5201
2024/06/21 23:50:05 [Info] [99350724] transport/internet/splithttp: dialing splithttp to tcp:127.0.0.1:6001
2024/06/21 23:50:05 [Info] [99350724] proxy/vless/outbound: tunneling request to tcp:127.0.0.1:5201 via 127.0.0.1:6001
2024/06/21 23:50:05 127.0.0.1:4100 accepted tcp:127.0.0.1:5201 [dkd >> agentout]
2024/06/21 23:50:05 [Debug] [2725169439] proxy/dokodemo: processing connection from: 127.0.0.1:4102
2024/06/21 23:50:05 [Info] [2725169439] proxy/dokodemo: received request for 127.0.0.1:4102
2024/06/21 23:50:05 [Info] [2725169439] app/dispatcher: default route for tcp:127.0.0.1:5201
2024/06/21 23:50:05 [Info] [2725169439] transport/internet/splithttp: dialing splithttp to tcp:127.0.0.1:6001
2024/06/21 23:50:05 [Info] [2725169439] proxy/vless/outbound: tunneling request to tcp:127.0.0.1:5201 via 127.0.0.1:6001
2024/06/21 23:50:05 127.0.0.1:4102 accepted tcp:127.0.0.1:5201 [dkd >> agentout]
2024/06/21 23:50:06 [Info] [99350724] app/proxyman/inbound: connection ends > proxy/dokodemo: connection ends > proxy/dokodemo: failed to transport request > io: read/write on closed pipe
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] [2725169439] app/proxyman/inbound: connection ends > proxy/dokodemo: connection ends > proxy/dokodemo: failed to transport request > io: read/write on closed pipe
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
2024/06/21 23:50:06 [Info] transport/internet/splithttp: failed to send upload, bad status code:500 Internal Server Error
Here are my findings. Because client upload data concurrently, for some reason, which I have no idea, some packets may be blocked permanently. So the upload queue will be filled up. Eventuality the server print out an error message "packet queue is too large".
I come up with two solutions.
Firt, disable concurrent-upload on client side. The code is https://github.com/vrnobody/xraycore/commit/cecbc2b574e5c2b521497c983615e8dc2b384934 which is targeting v1.8.15.
The second one is a little bit complicated. On the server side:
Here is a sample code https://github.com/vrnobody/xraycore/commit/a93adb5caf75996a6bd8690fcd513cf2c08d6d9e Targeting v1.8.15 too.
On my computer, both solutions are about 10% slower. I personally prefer the first one. It is much simpler.
i think it is reasonable to say, when the user sets maxConcurrentUploads == 1
, we
The problem I have with this is that it's only a workaround, there is a bug we don't understand.
block other request, which do not meet the above requirement
BTW. What happens if you set maxConcurrentUploads == 2000
on the server, and keep it at 10 (or 20) on the client?
After setting maxConcurrentUploads
to 2000
on the server side with v1.8.16
. Memory usage goes up to 5G and more. The bright side is disconnection problem disappeared. But network speed is not stable.
iperf3 -c 127.0.0.1 -p 6003 -t 120 -P 2
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 70.73-87.47 sec 1.61 GBytes 824 Mbits/sec
[ 7] 70.73-87.47 sec 920 MBytes 461 Mbits/sec
[SUM] 70.73-87.47 sec 2.50 GBytes 1.29 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 87.47-96.02 sec 278 MBytes 273 Mbits/sec
[ 7] 87.47-96.02 sec 304 MBytes 298 Mbits/sec
[SUM] 87.47-96.02 sec 582 MBytes 571 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 96.02-99.31 sec 111 MBytes 283 Mbits/sec
[ 7] 96.02-99.31 sec 117 MBytes 298 Mbits/sec
[SUM] 96.02-99.31 sec 227 MBytes 581 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 99.31-103.95 sec 57.0 MBytes 103 Mbits/sec
[ 7] 99.31-103.95 sec 69.5 MBytes 125 Mbits/sec
[SUM] 99.31-103.95 sec 126 MBytes 228 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 104.00-105.55 sec 5.00 MBytes 27.1 Mbits/sec
[ 7] 104.00-105.55 sec 7.50 MBytes 40.6 Mbits/sec
[SUM] 104.00-105.55 sec 12.5 MBytes 67.7 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 105.55-112.30 sec 184 MBytes 228 Mbits/sec
[ 7] 105.55-112.30 sec 275 MBytes 342 Mbits/sec
[SUM] 105.55-112.30 sec 459 MBytes 570 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 112.30-118.06 sec 130 MBytes 189 Mbits/sec
[ 7] 112.30-118.06 sec 236 MBytes 343 Mbits/sec
[SUM] 112.30-118.06 sec 365 MBytes 532 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 118.06-125.12 sec 272 MBytes 323 Mbits/sec
[ 7] 118.06-125.12 sec 260 MBytes 310 Mbits/sec
[SUM] 118.06-125.12 sec 532 MBytes 633 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 125.12-131.00 sec 151 MBytes 215 Mbits/sec
[ 7] 125.12-131.00 sec 135 MBytes 193 Mbits/sec
[SUM] 125.12-131.00 sec 286 MBytes 408 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 131.00-135.49 sec 352 MBytes 658 Mbits/sec
[ 7] 131.00-135.49 sec 239 MBytes 447 Mbits/sec
[SUM] 131.00-135.49 sec 591 MBytes 1.10 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ 5] 135.49-142.05 sec 474 MBytes 606 Mbits/sec
[ 7] 135.49-142.05 sec 552 MBytes 706 Mbits/sec
[SUM] 135.49-142.05 sec 1.00 GBytes 1.31 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
In order to figure out what is happening, I add some logging code to v1.8.15. https://github.com/vrnobody/xraycore/commit/0e2f8effded5daf2d760d70ed26852690d7f99a8
There is nothing interesting on the client side, so the following discussion is focusing on the server side. Let's take one request to explain what those logs mean.
// handle one client request with seq=2
2024/06/26 13:54:26 [Error] transport/internet/splithttp: handling: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=2
// read req.Body into variable "payload"
2024/06/26 13:54:26 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=2
2024/06/26 13:54:26 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=2 len: 8k
// push Packet into uploadQueue.pushedPackets
2024/06/26 13:54:26 [Error] transport/internet/splithttp: push: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=2
2024/06/26 13:54:26 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=2
// client request handling finished
2024/06/26 13:54:26 [Error] transport/internet/splithttp: handled: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=2
// reader take one packet from uploadQueue.pushedPackets
2024/06/26 13:54:26 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 2
The full server log is too long, so I filter out the unimportant parts.
cat log-serv.txt | grep "9f16ef94" | grep -e "reading" -e "pushed" -e "pop" -e "readed" -e "dump" -- > log-sim.txt
Let's focus on seq=421 and seq=423
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=420
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=420 len: 16k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=420
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 420
// seq=421 begin to read req.Body
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=421
// other requests arrived and are pushed into uploadQueue.pushedPackets
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=413 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=413
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 413
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=412 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=412
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 412
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=416 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=416
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 416
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=424
// seq=423 is similar to seq=421
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=423
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=422
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=411 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=411
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 411
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=424 len: 16k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=424
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 424
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=410 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=410
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 410
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=426
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=419 len: 752k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=419
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 419
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=425
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=418 len: 16k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=418
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 418
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=417 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=417
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 417
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=427
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=428
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=429
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=430
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=425 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=425
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 425
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=408 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=408
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 408
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=430 len: 16k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=430
// seq=423 read in time and is pushed into uploadQueue.pushedPackets
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=423 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=423
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=432
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=431
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=434
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=433
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 430
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 423
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=422 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=422
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=427 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 422
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=427
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 427
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=431 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=431
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 431
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=435
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=436
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=435 len: 16k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=435
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 435
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=426 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=426
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=437
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=437 len: 16k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=437
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=433 len: 16k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=433
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 426
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 437
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 433
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=438
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=428 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=428
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 428
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=441
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=439
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=442
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=440
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=434 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=434
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 434
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=438 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=438
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 438
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=444
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=443
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=429 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=429
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 429
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=442 len: 16k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=442
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 442
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=446
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=445
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=443 len: 16k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=443
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 443
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=436 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=436
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=444 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=444
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 436
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 444
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=448
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=449
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=447
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=447 len: 16k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=447
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=440 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=440
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 447
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 440
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=451
2024/06/26 13:54:31 [Error] transport/internet/splithttp: reading body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=450
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=432 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=432
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pop: 9f16ef94-2abf-4643-a509-32d4ab082e6b with seq: 432
// packet queue is too large error
2024/06/26 13:54:31 [Error] transport/internet/splithttp: dump session: 9f16ef94-2abf-4643-a509-32d4ab082e6b seq: 421 heap size: 21 chan size: 0
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=451 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=451
// unfortunately, the uploadQueue is full before seq=421 is finished reading.
2024/06/26 13:54:31 [Error] transport/internet/splithttp: readed body: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=421 len: 984k
2024/06/26 13:54:31 [Error] transport/internet/splithttp: pushed: /?session=9f16ef94-2abf-4643-a509-32d4ab082e6b&seq=421
Full server log is here. log-serv.txt
@mmmray 有进展吗
I can look into it next week.
@vrnobody Sorry for the lack of reply, I forgot to write, I didn't understand the logs or what pattern you were seeing in them, are you saying that with certain requests like 421, the request body Read is hanging?
完整性要求
版本
Xray 1.8.15 404af13 (go1.22.4 windows/amd64)
描述
用 vless.splithttp.tls 执行
iperf3 -c 127.0.0.1 -p 6003 -P 2 -t 5
并发测速时会断流。禁用客户端的并发 upload 代码则没出现这种情况。 改动的代码:https://github.com/vrnobody/xraycore/commit/cecbc2b574e5c2b521497c983615e8dc2b384934iperf3 日志
相应的服务器日志
重现方式
本地运行 vless.splithttp.tls 服务器和客户端。用 iperf3 并发测 SplitHTTP。
客户端配置
服务端配置
客户端日志
服务端日志