What's up with read concurrency #2747
-
We noticed a strong decline in performance when upgrading 3.6.2 to 3.8.6 (python 3.9). It turned out that we could no longer have multiple open requests in parallel (tcp). How come this feature was removed? The information I could find was an old thread (#475) that indicates it shouldn't exist and a reference to locks in patch 3.6.9. |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 3 replies
-
Multiple requests have not been supported for quite a while. The client API have not permitted it cleanly since something like 3.1. Since something like 3.3 there have been a low level lock in place to secure against competing requests. Only a handful of devices support multiple requests, and even for those the requests are still executed one by one, and execution is typically a factor slower than the tcp socket communication, so even with those devices you save next to nothing. When testing we have not seen a real decline in performance on the contrary performance have improved quite a lot. May I suggest you do not upgrade if you do not like the newer versions. Btw. 3.8 is anyhow a very old version, we are at 3.11 |
Beta Was this translation helpful? Give feedback.
-
Sorry I forgot to mention that this is from a server perspective (StartAsyncTcpServer). The test was performed using a client (Bachmann) connected that supports concurrent reads and the server from 3.6.2 was over 10x faster as it was serving the requests in parallel (e.g. request | request | request | response | response | response). Wireshark logs showed the 3.8.6 server was serially serving requests (e.g. request | response | request | response | request | response). I'll try to repeat the test with version 3.11. |
Beta Was this translation helpful? Give feedback.
-
Just controlled the server have basically not changed between 3.6.2 and 3.8 especially not in terms of transport. 3.8 and 3.9 have quite a number of server changes in more or less all layers. |
Beta Was this translation helpful? Give feedback.
Just controlled the server have basically not changed between 3.6.2 and 3.8 especially not in terms of transport. 3.8 and 3.9 have quite a number of server changes in more or less all layers.