As Akretion starts to host some OpenERP servers for its SMB customers, we wanted to know which protocol is best for accessing an OpenERP server hosted on the Internet. So we made a comparision of the performances of Net-RPC, XML-RPC, XML-RPC SSL, HTTP, HTTPS, etc… Of course, only secure protocols should be selected when using an OpenERP server hosted on the Internet.
=========
Benchmarks with OpenERP server hosted on the Internet
October 27th, 2011
As Akretion starts to host some OpenERP servers for its SMB customers, we want to propose them a solution that is both fast and secure. So far, the majority of our customers host the OpenERP server on their LAN and access it via the Gtk Client through the Net-RPC protocol. The Net-RPC protocol is fast but not secure : the passwords and all the data are sent in clear, but our customers consider that, as the connection is made over their LAN, it’s not a problem. By the way, it is probably a bad assumption, because a lot of IT attacks against companies come from the inside ! And when our customers need to access OpenERP from outside the office, they connect by VPN to their LAN and then they use OpenERP as usual with Gtk Client and Net-RPC protocol.
In order to select the best option for our customers that access an OpenERP server over the Internet, we made a real-life benchmark with an OpenERP server running on a machine in a datacenter, and elaborated a precise usage scenario. Basically, the scenario consist in a full purchase workflow (PO, reception of goods, supplier invoice) and a full sale workflow (SO, delivery order, customer invoice). For each protocol, we executed this scenario manually multiple times. We kept the fastest timing that was measured. As we ran the scenario manually, we estimate that the results are valid with a 10 seconds accuracy.
Bench with OpenERP server hosted on the Internet
Net-RPC | Net-RPC inside SSH tunnel | XML-RPC | XML-RPC SSL | HTTP access with Firefox 7 | HTTP access with Chrome 14 | HTTPS access through an Nginx proxy with Chrome 14 | |
---|---|---|---|---|---|---|---|
Secure ? | no | yes | no | yes | no | no | yes |
OpenERP 6.0.3 | 1 min 49 | 1 min 47 | 2 min 11 | 3 min 08 | 2 min 04 | 2 min 11 | 2 min 05 |
OpenERP 6.1 (trunk) | 1 min 42 | 1 min 40 | 1 min 52 | not available ? | buggy | 1 min 43 | 1 min 40 |
Bench with an OpenERP server hosted on the LAN
Net-RPC | |
---|---|
OpenERP 6.0.3 | 1 min 15 |
OpenERP 6.1 (trunk) | 1 min 08 |
Here is our analysis of the results of this benchmark :
-
OpenERP 6.1 is faster than OpenERP 6.0, thanks to the optimisations in the code of the server and addons (and also thanks to an ergonomy improvement on invoice generation from delivery orders).
-
XML-RPC SSL is not an option because it’s too slow. If you activate the debug logs on the OpenERP server, you will see that the SSL session is re-established for every request, which explains the bad performances.
-
on OpenERP 6.0, Net-RPC is the fastest, but the Web interface is not too far behind : only 15% slower.
-
on OpenERP 6.1, the Web interface is as fast as Net-RPC !
The developers of the new Web interface of OpenERP 6.1 made a great job ! Thumbs up !
As a conclusion, for those who plan to use an OpenERP server over the Internet, the best option is probably to upgrade to version 6.1 when it will be released and use the new OpenERP Web interface via HTTPS through a reverse proxy (more explainations about reverse proxy on Wikipedia).