memoQ performance: use HTTPS connection
...and make memoQ's network communication several times faster.
I enjoy working on memoQ performance issues, at least I enjoy those cases that I eventually manage to solve. The others I try to forget. I had plans to write a whole book about managing and troubleshooting memoQ performance, but I decided to start using Substack instead and write about a wider range of topics. Anyway, here’s an interesting case I recently encountered.
To the point: the problem and the solution
I’ll start by explaining the incident and how it was solved. Then I’ll go into the details. A complaint from a memoQ project manager user was that he was unable to open some larger memoQ online projects for management. He got a timeout error. I didn’t have the same issue when trying to open the same projects. When you try to open a project for management, there is some data for your memoQ client application to download, and for this PM the download didn’t finish within the one minute allotted by memoQ, so it failed with an error. Other than the project being quite large, apparently the issue was the type of connection his memoQ client used. The memoQ TMS (memoQ server) he was using is configured to allow two types of connection: one is “Secure TCP” (over port 2705 by default), the other is HTTPS (443). He was using Secure TCP, and it turned out that it was several times slower than HTTPS. There’s yet another contributing factor: he was located in India and the server was in a Microsoft datacenter in Ireland.
Although we haven’t confirmed the solution yet, I’m quite convinced that going to HTTPS will solve the problem for him. When working on this case I’ve tested the same server as well as others and I consistently got three to four times faster connection between a memoQ client and a memoQ TMS instance (memoQ server) by using HTTPS instead of Secure TCP. When a memoQ client needs to download data from the server, that finishes several times faster over an HTTPS connection versus TCP. Note that opening a project is just one example where network speed matters, and maybe not even the best one: checking out a project, exporting large files or TMs, and many other daily operations can be affected. I recommended to get rid of the "Secure TCP" connection option completely for this memoQ TMS instance and make sure that every memoQ client connects via HTTPS.
More details
I found that in the office the project manager works in, they have solid WiFi and internet connection. Network speed tests they performed against a web server in the region (using speedtest.net) showed download speeds higher than 200 mbps.
When a memoQ user opens a large memoQ project for management, there is some data to download for the memoQ client. Using Task manager to track the download speeds, he got just 1-2 mbps download speeds from the memoQ TMS machine. 1-2 mbps is very slow (assuming you are not in the 90s on a dialup connection), and it doesn't cut it for using memoQ. Apparently, there is a one minute timeout for the project open operation, and it failed with a timeout error. So he couldn't open the project and couldn't work.
Using an HTTPS connection, I got 30-40 mbps download speeds from the same memoQ TMS instance. (I have much more internet bandwidth than 30-40 mbps where I work, I suppose it is the server or the network infrastructure that limits me to 30-40 mbps. But 30-40 mbps is much better than 1-2 mbps, and should be enough for normal work with memoQ.) When I switched my connection to secure TCP, it became several times slower. It didn't get as slow as for the PM in the India office: I assume the low speeds in India was related to the geographical location versus the datacenter where the server is.
How to force the connection type for your memoQ client
First of all, it is the administrator of the memoQ TMS server who decides which types of connections are even allowed. So if they turned off HTTPS (in the memoQ TMS deployment tool), then users can’t ever connect via HTTPS. Also, unfortunately, there’s no user option for the connection type in memoQ settings, at least as far as I know. But that doesn’t always mean you can’t do anything. In the memoQ client log, after startup, you will see a line about the network protocol used:
2024.11.07 11:57:45.8968383 memoQ (Off) () (1,1) MemoQ client version: 10.2.30, TM engine version: 5 TB engine version: 5
2024.11.07 11:58:00.4868053 memoQ (Off) () (1,1) Protocol detection for server SERVER-NAME-REDACTED.com: Https
(The log file is here: c:\Users\USERNAME\AppData\Roaming\MemoQ\Log\MemoQLite.log) In our case, Secure TCP (port 2705) and HTTPS (443) are allowed by the memoQ server machine. memoQ clients apparently always attempt to use HTTPS first: in my case, HTTPS was used consistently according to my log. Also, after the memoQ client successfully connects, it saves the connection type (for each server) into a file:
c:\Users\USERNAME\AppData\Roaming\MemoQ\PrococolCache.bin. So if something forced the memoQ client to use Secure TCP just once, it will get stuck on Secure TCP for all subsequent connection attempts, because memoQ will read that setting from this file on startup.
So, since HTTPS is the default, if you currently get Secure TCP and want to force HTTPS, you should do this: stop the memoQ client, delete the PrococolCache.bin file, then restart the memoQ client. Then check the bottom of your log file, and see if it managed to connect via HTTPS now. If it didn't, that must mean that an HTTPS connection was prevented by a firewall or some network gear.
Forcing Secure TCP instead of HTTPS (to test and confirm the speed difference between the two) is more work: you need to use your own Windows firewall to block outgoing connections from your machine to port 443 of the memoQ TMS machine. (Assuming the memoQ TMS uses this default port number for the HTTPS connection option.) You can block port 443 generally, or you can block it for memoQ only, or block it for the address of your memoQ server machine. If you need specific steps, we can discuss that in the comments.
How to check your memoQ network speed
There are probably many tools for this, but I found it easiest to just use Task manager. Click Performance and then click the button for WiFi or your Ethernet adapter to get a nice graph over time. This measures all the traffic through that adapter, so you should first confirm that no other app is making heavy traffic. Then, you could export a very large TM to TMX or (as in our case) open an extremely large project that takes many seconds to open. For a little while, nothing will happen: if you export a TMX for example, memoQ TMS first needs to do some work to actually create the TMX file, the actual download happens after that.
If you can’t force HTTPS, talk to IT
I suppose that if you work from home, you shouldn’t have any trouble using HTTPS. I’ve just realized that this post is probably most useful for people working in an office with its own infrastructure that might be limiting HTTPS connections for custom apps. In our case, verifying the solution is delayed because the network infrastructure in the office in India seems to block HTTPS for memoQ. If you have deleted the PrococolCache.bin file, and the log file still says memoQ connects via Secure TCP, then changes are needed in the configuration of the company firewall or anything else that might stop HTTPS from working for memoQ.
Another detail I've recently learned from the folks at memoQ support (or, rather, relearned after forgetting about it):
In memoQ's "Server URL" fields, you can enter the port number. Just put a colon after the server name, and then enter the number, like:
my.server.address.com:443
If you want to force an HTTPS connection, you most probably need 443. If you want to force (Secure) TCP, it is probably 2705, unless the server admin reconfigured it.
There's a new development. The plot thickens.
When writing this article, my assumption was that memoq always uses HTTPS connection when HTTPS is possible. So I further assumed that whenever HTTPS is not used, it must be because HTTPS in prevented by a firewall or similar.
However, I've since found with that these assumptions are wrong. Sometimes, memoQ defaults to Secure TCP even if HTTPS is "allowed" and could be used. I have no idea what the logic is, so far.
There is a file that contains the last used protocol (connection type) for each server the memoq client has recently contacted:
c:\Users\YOUR USERNAME\AppData\Roaming\MemoQ\PrococolCache.bin
This file needs to be edited in a hex editor and the protocol can be changed. Then when your restart memoQ, if HTTPS is possible, HTTPS will be used. In the file, the protocol is right after each server name. The value 01 means Secure TCP, and 03 means HTTPS.
I'll continue to investigate this.
And yes, there is a typo in the file name, "prococol." This is the name of the file, the typo is not mine but the developer's.